(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022177302
(43)【公開日】2022-11-30
(54)【発明の名称】スプレッドシートに基づくソフトウェアアプリケーションの開発
(51)【国際特許分類】
G06F 8/30 20180101AFI20221122BHJP
【FI】
G06F8/30
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022159385
(22)【出願日】2022-10-03
(62)【分割の表示】P 2020529683の分割
【原出願日】2018-12-03
(31)【優先権主張番号】15/829,979
(32)【優先日】2017-12-03
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.VISUAL BASIC
3.JAVASCRIPT
4.ANDROID
5.WINDOWS
6.XAMARIN
(71)【出願人】
【識別番号】519198948
【氏名又は名称】スタフラ,トーマス
(74)【代理人】
【識別番号】110002310
【氏名又は名称】特許業務法人あい特許事務所
(72)【発明者】
【氏名】スタフラ,トーマス
(57)【要約】 (修正有)
【課題】ローカルのスプレッドシートアプリケーション、ウェブ、および/またはクラウドベースのスプレッドシートソリューションにより、複雑なカスタムのソフトウェアアプリケーションを作成する方法及びコンピューティングデバイスを提供する。
【解決手段】ローコード/ノーコード技術を用いる方法であって、設計者は、ソフトウェアアプリケーションの基礎をなす青写真として1つまたは複数のスプレッドシートを用いてカスタムのおよび/または複雑なソフトウェアアプリケーションを作成する。結果として得られるソフトウェアアプリケーションは、静的/読出し専用であるかまたはユーザが、例えば、1つまたは複数のオンラインウェブページを介するかまたはモバイルアプリケーションを介して、アプリケーションデータを動的に追加、削除、編集するかまたは他の方法で修正することを可能にするべく、対話型である。
【選択図】
図3A
【特許請求の範囲】
【請求項1】
少なくとも1つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の少なくとも1つの一次データソースを決定することであって、前記少なくとも1つの一次データソースが、前記スプレッドシートの第1のワークシートに対応する、前記決定することと、
少なくとも1つの二次データソースを決定することであって、前記少なくとも1つの二次データソースが前記第1のワークシートと異なる第2のワークシートに対応する、前記決定することと、
前記一次データソースのレコードと前記二次データソースのレコードとの間の関係を決定することであって、前記関係を決定することは、前記第1のワークシートおよび前記第2のワークシートの1つもしくは複数の特徴に基づいて、または前記一次データソースのレコードのコンテンツおよび前記二次データソースのレコードのコンテンツに基づいて、前記関係を自動的に検出することを含む、前記決定することと、
前記決定された関係に基づいて、前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部を備える第3のワークシートを自動的に生成することであって、ここにおいて、前記第3のワークシートのコンテンツは、前記第1のワークシートのコンテンツおよび前記第2のワークシートのコンテンツと同期され、ここにおいて、前記第3のワークシートの第1の行は、前記一次データソースから選択される少なくとも1つの第1のセル、ならびに、前記決定された関係および前記第1のセルに基づいて前記二次データソースから選択される少なくとも1つの、前記第1のセルと異なる第2のセルを備える、前記生成することと、
前記第3のワークシートのレコードを修正することによってユーザ入力を受信することと、
前記受信したユーザ入力に基づき、かつ前記決定された関係に基づいて、前記第3のワークシートの前記レコードに対応する前記二次データソースの少なくとも1つのレコードを更新することと、を含む、方法。
【請求項2】
前記第3のワークシートが、前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部の冗長なコピーを含み、
前記冗長なコピーは、前記一次データソースの前記レコードの少なくとも一部または前記二次データソースの前記レコードの少なくとも一部への変更を検出したことに応答して自動的に更新される、請求項1に記載の方法。
【請求項3】
前記スプレッドシート内の第1のユーザインターフェース・テンプレートを決定することであって、前記第1のユーザインターフェース・テンプレートは、前記一次データソースおよび前記二次データソースを識別する、前記決定すること、をさらに含み、
前記一次データソースのレコードと前記二次データソースのレコードとの間の関係を決定することは、さらに、前記第1のユーザインターフェース・テンプレートに基づく、請求項1または請求項2に記載の方法。
【請求項4】
前記一次データソースのレコードの少なくとも一部または前記二次データソースのレコードの少なくとも一部のコンテンツが変更されたことを判定することに応答して、前記第3のワークシートの前記対応するコンテンツを更新することをさらに含む、請求項1~請求項3のいずれか1項に記載の方法。
【請求項5】
前記第3のワークシートのコンテンツが変更されたことを判定することに応答して、前記一次データソースのレコードの少なくとも一部または前記二次データソースのレコードの少なくとも一部の対応するコンテンツを更新することをさらに含む、請求項1~請求項4のいずれか1項に記載の方法。
【請求項6】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係の表示を含む第2のユーザ入力を受信することを含む、請求項1~請求項5のいずれか1項に記載の方法。
【請求項7】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
1つまたは複数の手がかりに基づいて、自動的に、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の潜在的な関係を決定することと、
前記決定された潜在的関係の信頼性レベルを決定することと、
前記決定された信頼性レベルに基づいて前記決定された潜在的関係を受け入れるか、または拒否することと、を含む、請求項1~請求項5のいずれか1項に記載の方法。
【請求項8】
前記一次データソースのレコードと前記二次データソースのレコードとの関係を決定することが、前記一次データソースの前記レコードおよび前記二次データソースの前記レコードのレコード構造に基づいている、請求項1~請求項5のいずれか1項に記載の方法。
【請求項9】
前記一次データソースのレコードと前記二次データソースのレコードとの関係を決定することが、前記一次データソースの前記レコードの第1の列および前記二次データソースの前記レコードの第2の列の共通のコンテンツに基づいている、請求項1~請求項5のいずれか1項に記載の方法。
【請求項10】
前記関係を決定することは、前記スプレッドシートのセルの少なくとも1つの式の少なくとも1つのパラメータに基づく、請求項1~請求項5のいずれか1項に記載の方法。
【請求項11】
前記第3のワークシートの少なくとも1つの第1のレコードのフォーマットが変更されたことを判定することに応答して、前記第1のワークシートまたは前記第2のワークシートの対応する第2のレコードのフォーマットを更新すること、または
前記第1のワークシートまたは前記第2のワークシートの少なくとも1つの第1のレコードのフォーマットが変更されたことを判定することに応答して、前記第3のワークシートの対応する第2のレコードのフォーマットを更新すること、をさらに含む、請求項1~請求項10のいずれか1項に記載の方法。
【請求項12】
前記スプレッドシート内の少なくとも1つの三次データソースを決定することであって、前記少なくとも1つの三次データソースが、前記スプレッドシートの異なる第4のワークシートに対応する、決定することと、
前記第3のワークシートの前記レコードと前記三次データソースのレコードとの間の第2の関係を決定することと、
前記決定された第2の関係に基づいて、前記第3のワークシートの前記レコードの少なくとも一部および前記三次データソースの前記レコードの少なくとも一部を備える第5のワークシートを自動的に生成することであって、前記第5のワークシートのコンテンツが、前記第1のワークシートのコンテンツ、前記第2のワークシートのコンテンツ、および前記第4のワークシートのコンテンツと同期される、生成することと、をさらに含む、請求項1~請求項11のいずれか1項に記載の方法。
【請求項13】
前記第4のワークシートの少なくとも1つのセルは、自動的に生成された前記第3のワークシートの少なくとも1つのセルを参照する式を含む、請求項1~請求項12のいずれか1項に記載の方法。
【請求項14】
請求項1~請求項13のいずれか1項に記載の方法を実行するよう構成されるコンピューティングデバイス。
【請求項15】
1つまたは複数のプロセッサによって実行されるときに、請求項1~請求項13のいずれか1項に記載の方法のパフォーマンスを生じさせる命令を格納するコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本特許明細書の開示内容の一部には、著作権保護の対象物が含まれる。著作権者は、特許商標庁の特許ファイルまたは記録への掲載に伴う本特許明細書または特許開示の複写には異議を提起しないが、それ以外については、どのようなものであれ、すべての著作権を留保する。
関連出願への相互参照
【0002】
本出願は、2017年12月3日に出願された「Spreadsheeet-Based Software Application Development」という名称の米国出願第15/829,979号の優先権を主張したPCT出願である。米国出願第15/829,979号は、2016年12月3日に出願された「Spreadsheeet-Based Software Application Development」という名称の米国仮出願第62/429,749号に対する優先権を主張する「Spreadsheet-Based Software Application Development」という名称の米国仮出願第15/455,909号の一部継続出願である。
【0003】
本明細書で説明される態様は、一般に、コンピュータおよびコンピュータネットワークのためのアプリケーションおよびソフトウェア開発に関する。より詳細には、本明細書で説明される態様は、特に、対話型ウェブアプリケーションなどのカスタムの複雑なソフトウェアのローコードおよびノーコードソフトウェア開発のためのシステムおよび方法を提供する。
【背景技術】
【0004】
ソフトウェア開発は、難しい、時間のかかるプロセスとなることがある。専門のトレーニングおよび知識が一般に必要とされ、個人が複雑なおよび/またはカスタムのソフトウェアアプリケーションを開発することができるようになるまでにしばしば数年の経験が必要とされる。これらのスキルを持っていなければ、ソフトウェア開発をするのにしばしば多額の費用でソフトウェア開発者またはソフトウェア開発会社を利用しなければならない。加えて、ひとたびソフトウェア開発プロセスが始まれば、カスタムのおよび/または複雑なソフトウェアを開発するのに数週間、数か月、またはさらには数年かかることがある。
【0005】
オンラインでまたはモバイルデバイスで用いられることになるカスタムのソフトウェアアプリケーションの開発は、一般に、C#またはJavaなどの高レベルプログラミング言語でのプログラミングを伴う。ソフトウェアアプリケーションが有する融通性と能力が高ければ高いほど、資金を供給するまたは構築する多くの編成のために、それはより多くの時間と法外な費用がかかるものになる。ソフトウェアアプリケーションの開発者がいくつかのクライアントの間で費用を分担するために構築済みのコンポーネントを用いるときでさえも、多くのプロジェクトは各編成の独自の要件に起因して依然として構築に時間がかかる。
【0006】
あるケースでは、ソフトウェアアプリケーションは既製品で購入することができるが、その場合、編成は既製品の特徴に制限される。カスタマイゼーションは、オリジナルのソフトウェア開発がそうであるように、しばしば難しく、時間がかかる、および/または費用がかかる。
【0007】
それらの信じられないほどパワフルなビジネス分析能力、記録保管能力および編成能力に基づいて、スプレッドシートは今やビジネスに広く普及している。スプレッドシートは、おそらくワードプロセッサを除いて、どのカテゴリのソフトウェアよりもビジネスで用いられている。しかしながら、スプレッドシート自体は、ソフトウェアアプリケーションを構築するためのプラットフォームツールとして用いられるようになるための概念的枠組みが欠けている。よくても、既存のスプレッドシートソフトウェアは、ユーザが1つまたは複数のカスタムの機能を行うためにプログラムコードを含めることを可能にし得る。しかしながら、該プログラムコードは、依然としてVisual Basicなどの高度な言語で書かれなければならず、これはまた、高度なプログラミングスキル、能力、およびリソースを必要とする。
【発明の概要】
【0008】
以下に、本明細書で説明される種々の態様の簡略化された要約を提示する。この要約は、広範な概要ではなく、鍵となるまたは重要な要素を特定することまたは請求項の範囲を線引きすることを意図していない。以下の要約は、以下に提供されるより詳細な説明への序章としていくつかの概念を簡略化された形態で単に提示する。
【0009】
スプレッドシートは、非技術系のユーザが計算およびレポートの印刷などのタスクを行うための普及したツールであって、独自の概念モデルである。スプレッドシートは、しばしば2つの方法で用いられる:各行がレコードであるテーブル、または各レコードを有することはシート全体またはファイル全体を備える。スプレッドシートおよびスプレッドシートアプリケーション自体は、ソフトウェアアプリケーションを構築するためのプラットフォームツールとして作用するための概念的枠組みが欠けているが、本明細書で説明される態様は、このようなシステムの基礎をなす青写真として1つまたは複数のスプレッドシートを用いて複雑な対話型ソフトウェアおよび/またはウェブアプリケーションを自動的に生成するように動作可能なツールおよび機能を含む。このようなツールおよび機能、または、本明細書で説明される1つまたは複数のツールおよび/または機能と共に構成される方法および/またはシステムは、webifier、webifierシステム、webifierソフトウェアなどとも呼ばれ得る。
【0010】
前述のような従来技術での制限を克服するために、および、本明細書を読んで理解すれば明白となるであろう他の制限を克服するために、本明細書で説明される1つまたは複数の態様は、スプレッドシートに含まれるデータおよび書式設定テンプレートに基づいて対話型ウェブアプリケーションの作成を容易にすることに向けられる。
【0011】
本明細書で説明される第1の態様は、少なくとも1つのウェブページを備える対話型ウェブアプリケーションを生成するための方法、システム、およびコンピュータ可読媒体を提供する。本明細書で説明される技術は、それぞれ1つまたは複数のデータレコードを有する1つまたは複数のデータソースを識別するべくスプレッドシートを分析することと、それぞれデータソースのうちの1つまたは複数に関するデータフォーマットを備える1つまたは複数のユーザインターフェース・テンプレートを識別するべくスプレッドシートを分析することを含み得る。スプレッドシートは、複数のワークシート(本明細書では単に「シート」とも呼ばれる)を備え、データソースは、第1のスプレッドシートの少なくとも一部を備え、一方、ユーザインターフェース・テンプレートは、第2のスプレッドシートの少なくとも一部を備え得る。ウェブデータストアは、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することに基づいて生成され得る。システムは、ウェブデータストアの抽出したデータレコードに基づいて、対話型ウェブアプリケーションの特定のウェブページを生成し、特定のウェブページは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされるデータレコードおよび
/またはデータレコードへの参照を備え得る。システムは、ページに関する要求に応答して特定のウェブページの提示を生成し得る。さらに、システムは、ウェブアプリケーションを介してユーザ入力を受信することに応答してウェブデータストアを更新し得る。
【0012】
ユーザインターフェース・テンプレートは、フォントフォーマット、セルサイズ、および/または任意の他の適切な表示書式設定などの対応するデータソースおよび/またはレコードに関するデータフォーマットを定義するおよび/または備え得る。いくつかの実施形態では、ユーザインターフェース・テンプレートは、データソースに関連する1つまたは複数のデータ制約を定義し得る。このようなデータ制約は、データソースからデータレコードを選択するのに用いられ得る。代替的におよび/または加えて、ユーザインターフェース・テンプレートは、データソースに関連する1つまたは複数の入力検証制御を定義し得る。システムは、ウェブデータストアを更新することの一部としてまたはそれに加えて入力検証制御と突き合せてユーザ入力を評価し得る。いくつかの態様によれば、1つまたは複数のユーザインターフェース・テンプレートは、1つまたは複数のデータソースとは別個のワークシートに格納され得る。他の態様では、1つまたは複数のユーザインターフェース・テンプレートは、1つまたは複数のデータソースと同じワークシートに格納され得る。
【0013】
いくつかの態様によれば、システムは、スプレッドシートにおける少なくとも1つのデータフォーマットおよび/またはデータレコードへの1つまたは複数の変更を識別することに基づいて対話型ウェブアプリケーションを更新し得る。ユーザインターフェース・テンプレートにおけるデータフォーマットへの変更は、ウェブデータストアに影響を及ぼさずに対話型ウェブアプリケーションにおいて実装され得る。データレコードの内容への変更は、対話型ウェブアプリケーションのページに自動的に反映され得る。システムは、スプレッドシートにおけるデータレコードおよび/またはデータフォーマットになされた変更を自動的に検出および/または分析するように動作し得る。いくつかの態様によれば、システムは、ウェブデータストアになされた更新に基づいて、基礎をなすスプレッドシートを更新し得る。加えて、かつ/または代替的に、システムは、スプレッドシートにおけるデータレコードになされた変更に基づいてウェブデータストアを更新し得る。同様に、システムは、スプレッドシートのユーザインターフェース・テンプレートにおけるデータフォーマットになされた変更に基づいて対話型ウェブアプリケーションを更新し得る。
【0014】
いくつかの態様によれば、システムは、ウェブデータストアおよび/またはスプレッドシートに格納されたデータを閲覧するおよび/または修正するユーザの能力を制限するべくパーミッション制御を実装し得る。ユーザに関するセキュリティパーミッションは、1つまたは複数のユーザインターフェース・テンプレートなどのスプレッドシートにおいて定義され得る。セキュリティパーミッションは、スプレッドシートに関連するスプレッドシートアプリケーションのネイティブな式を用いて定義され得る。加えて、かつ/または代替的に、セキュリティパーミッションは、管理ポリシーサーバなどのスプレッドシート以外のソースから取得され得る。システムは、第1のセキュリティパーミッションを有する第1のユーザによるウェブデータストアの修正を防止し得る。システムは、第2のセキュリティパーミッションを有する第2のユーザから受信した入力に応答してウェブデータストアの修正を可能にし得る。
【0015】
スプレッドシートは、スプレッドシートアプリケーションソフトウェアを用いて生成され得る。例えば、いくつかの実施形態では、スプレッドシートは、MICROSOFT EXCELを用いて生成され得る。スプレッドシートは、任意の従来のスプレッドシートのデータフォーマットに準拠するデータファイルおよび/またはファイルのコレクションを備え得る。例えば、スプレッドシートは、MICROSOFT EXCELで用いられるXLSX、MS-XLS、および/またはMS-XLSBバイナリデータフォーマット
に準拠し得る。いくつかの実施形態では、生成されたウェブデータストアは、スプレッドシートを備え得る、または逆もまた同様である。
【0016】
いくつかの態様によれば、対話型ウェブアプリケーションは、データレコードおよび/またはユーザインターフェース・テンプレートに基づいて入力ウェブページおよび/または出力ウェブページを生成し得る。いくつかの実施形態では、システムは、1つまたは複数のユーザインターフェース・テンプレートにおいて識別されるデータソースに基づいてウェブ入力フォームを生成し、ウェブ入力フォームを介して1つまたは複数のレコードを修正するべくユーザ入力を受信し得る。システムは、第1のユーザインターフェース・テンプレートに基づいてウェブデータストアからデータを出力するためのデータ出力ウェブページを生成し、第2のユーザインターフェース・テンプレートに基づいてウェブデータストアにおけるデータを編集するのに使用可能なデータ編集ウェブページを生成し得る。いくつかの実施形態では、特定のウェブページを生成することは、特定のウェブページに関連するクライアントデバイス特徴に対応するユーザインターフェース・テンプレートを選択することを含み得る。
【0017】
別の態様または実施形態によれば、webifierシステムは、それぞれゼロまたはそれ以上のデータレコードを有する、スプレッドシート(単数または複数)内の1つまたは複数のデータソースを決定することと、データソースは、スプレッドシートの第1の部分を備え;それぞれデータソースのうちの1つまたは複数に関するデータフォーマットを備える、スプレッドシート内からの1つまたは複数のユーザインターフェース・テンプレートを決定することと、ユーザインターフェース・テンプレートは、スプレッドシートの第2の部分を備え;スプレッドシート内で識別されるデータソースからのデータレコードを備えるウェブデータストアを生成することと;特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに基づいて対話型ウェブアプリケーションの特定のウェブページを生成することと、特定のウェブページは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに基づいて識別される1つまたは複数のデータソースを参照し;対話型ウェブアプリケーションの特定のウェブページの提示に関する要求に応答して、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされる1つまたは複数のデータレコードを含む特定のウェブページの提示を生成することと;スプレッドシートに基づいて生成された対話型ウェブアプリケーションのウェブページを介してユーザ入力を受信することに応答してウェブデータストアを更新することと;により、少なくとも1つのウェブページを備える対話型ウェブアプリケーションを生成するように構成され得る。
【0018】
いくつかの態様において、以下の任意の組み合わせがwebifierシステム内にまたはwebifierシステムにより含まれ得る:スプレッドシートに基づいて生成された対話型ウェブアプリケーションのウェブページは特定のウェブページである;スプレッドシートは複数のワークシートを備え、スプレッドシートの第1の部分は、スプレッドシートの第2の部分とは異なるワークシート上にある;スプレッドシートは複数のワークシートを備え、1つまたは複数のユーザインターフェース・テンプレートは、1つまたは複数のデータソースと同じワークシートに格納される;ユーザインターフェース・テンプレートの少なくとも1つのデータフォーマットは、対応するデータソースのフォントフォーマットを含む;ユーザインターフェース・テンプレートの少なくとも1つのデータフォーマットは、対応するデータソースのセルサイズに基づいている;方法は、ウェブデータストアを更新することに基づいてスプレッドシートを更新することをさらに含み得る;方法は、1つまたは複数のユーザインターフェース・テンプレートに関連する少なくとも1つのデータフォーマットへの1つまたは複数の変更を識別するべくスプレッドシートを分析することと、ウェブデータストアに影響を及ぼさずに変更されたデータフォーマットに基
づいて対話型ウェブアプリケーションを更新することをさらに含み得る;方法は、1つまたは複数のデータソースのデータレコードになされた1つまたは複数の変更を識別するべくスプレッドシートを分析することと、変更されたデータレコードに基づいてウェブデータストアを更新することをさらに含み得る(この場合、このような修正は、自動的に、インターバルをおいて、ユーザ入力に基づいてなどで行われ得る);方法は、1つまたは複数のデータソースに関連する少なくとも1つのデータレコードになされた1つまたは複数の変更を識別するべくスプレッドシートを分析することと、変更されたデータレコードに基づいてウェブデータストアを更新することをさらに含み得る(この場合、このような修正は、自動的に、インターバルをおいて、ユーザ入力に基づいてなどでさらに行われ得る)。
【0019】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、第1のセキュリティパーミッションを有する第1のユーザによるウェブデータストアの修正を防止し、第2のセキュリティパーミッションを有する第2のユーザから受信した入力に応答してウェブデータストアの修正を可能にするべく、セキュリティ制御を含み得る。第1および第2のセキュリティパーミッションは、1つまたは複数のユーザインターフェース・テンプレートに基づいて決定され得る。セキュリティパーミッションは、随意的に、スプレッドシートを生成したスプレッドシートアプリケーションにネイティブな式により定義され得る。
【0020】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、スプレッドシートは、生成されたウェブデータストアを備え得る、またはウェブデータストアは、スプレッドシートとは別個であり得る。ウェブデータストアの識別または生成は、適用可能なデータを格納する際に、適用可能なスプレッドシート(単数または複数)のレコードまたはその一部を格納することを含み得る。
【0021】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、XLSX、MS-XLSバイナリデータフォーマット、またはMS-XLSBバイナリデータフォーマットに準拠するスプレッドシートを用い得る。
【0022】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、ウェブデータストアを生成した後で、その後、スプレッドシートにおける1つまたは複数のデータレコードになされた1つまたは複数の変更に基づいてウェブデータストアを更新し得る。
【0023】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、特定のウェブページを生成した後で、スプレッドシートにおける1つまたは複数のユーザインターフェース・テンプレートになされた1つまたは複数の変更に基づいて特定のウェブページを更新し得る。
【0024】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、データソースに関連する1つまたは複数のデータ制約を識別する少なくとも1つのユーザインターフェース・テンプレートを含み、システムは、1つまたは複数のデータ制約を満たすデータレコードを選択することに基づいて特定のウェブページの提示を生成し得る。1つまたは複数のデータ制約は、随意的に、スプレッドシートにおいて識別されるユーザレベルのセキュリティ制約を含み得る。随意的に、1つまたは複数のデータ制約のうちの少なくとも1つは、スプレッドシートに関連するスプレッドシートアプリケーションにネイティブな式により定義され得る。
【0025】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、特定のデータソースに関連する1つまたは複数の入力検証ルールを識別する少なくとも1つのユーザインターフェース・テンプレートを含み、システムは、1つまたは複数の入力検証ルールと突き合せてユーザ入力をさらに評価し得る。随意的に、ウェブデータストアが特定のウェブページに関連する1つまたは複数の入力検証ルールを識別するときに、システムは、1つまたは複数の入力検証ルールと突き合せてユーザ入力を評価し得る。
【0026】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、ウェブアプリケーションを介してユーザ入力を受信し、システムは、1つまたは複数のユーザインターフェース・テンプレートにおいて識別されるデータソースに基づいてウェブ入力フォームを生成し、ウェブ入力フォームを介してユーザ入力を受信し得る。
【0027】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、対話型ウェブアプリケーションは、第1のユーザインターフェース・テンプレートに基づいてウェブデータストアからデータを出力するためのデータ出力ウェブページを生成し、第2のユーザインターフェース・テンプレートに基づいてウェブデータストアにおけるデータを編集するのに使用可能なデータ編集ウェブページを生成し得る。
【0028】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、特に、例えば、モバイルデバイスに特有のページを修正するべく特定のウェブページに関連するクライアントデバイス特徴に対応するユーザインターフェース・テンプレートを選択することにより特定のウェブページを生成し得る。
【0029】
別の態様によれば、webifierシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されるときにシステムに対話型ソフトウェアアプリケーション(例えば、ウェブアプリケーション)を生成させる命令を格納するメモリを含み得る。webifierシステムは、スプレッドシートを評価することに基づいて、それぞれ1つまたは複数のデータレコードを有する、スプレッドシート内の1つまたは複数のデータソースを取得し得、データソースは、スプレッドシートの第1のワークシートの少なくとも一部を備える。システムは、スプレッドシートを評価することに基づいて、それぞれデータソースのうちの1つまたは複数に関するデータフォーマットを備える、スプレッドシート内の1つまたは複数のユーザインターフェース・テンプレートを取得し得、ユーザインターフェース・テンプレートは、スプレッドシートの第2のワークシートの少なくとも一部を備える。システムは、随意的に、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することにより、ウェブデータストアを生成し得る、またはシステムは、(このまたは任意の他の実施形態において)スプレッドシートをウェブデータストアとして用い得る。システムは、ウェブデータストアの抽出したデータレコードに基づいて対話型ソフトウェアアプリケーションの特定のウェブページを生成し得、特定のウェブページは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに基づいて識別されるおよびフォーマットされるデータレコードへの参照を備える。対話型ソフトウェアアプリケーションの特定のウェブページの提示に関する要求に応答して、システムは、特定のウェブページの提示を生成し得る。システムはまた、対話型ソフトウェアアプリケーションを介してユーザ入力を受信することに応答してウェブデータストアを更新し得る。
【0030】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、webifierシステムは、データソースに関連する1つまたは複数のデータ制約を識別する少なくとも1つのユーザインターフェース・テンプレートを含み得る。命令は
、1つまたは複数のプロセッサによって実行されるときに、さらにシステムに、1つまたは複数のデータ制約を満たすデータレコードを選択することに基づいて特定のウェブページの提示を生成させ得る。
【0031】
別の態様または実施形態によれば、webifierシステムは、対話型ウェブアプリケーションを生成し得る。webifierシステムは、スプレッドシートを評価することに基づいて、それぞれゼロまたはそれ以上のデータレコードを有する、スプレッドシート内の1つまたは複数のデータソースを取得し得、データソースは、スプレッドシートの第1のワークシートの少なくとも一部を備える。システムは、スプレッドシートを評価することに基づいて、それぞれデータソースのうちの1つまたは複数に関するデータフォーマットを備える、スプレッドシート内の1つまたは複数のユーザインターフェース・テンプレートを取得し得、ユーザインターフェース・テンプレートは、スプレッドシートの第2のワークシートの少なくとも一部を備える。システムは、スプレッドシート内で識別されるデータソースからのデータレコードを備えるウェブデータストアを生成し得る。システムは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに基づいて対話型ウェブアプリケーションの特定のウェブページを生成し得、特定のウェブページは、データソースのうちの少なくとも1つのデータソースへの参照および特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに基づく書式設定を備える。システムは、対話型ウェブアプリケーションの特定のウェブページの提示に関する要求に応答して、少なくとも1つのデータソースに関連するおよび特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに従ってフォーマットされる1つまたは複数のデータレコードを含む特定のウェブページの提示を生成し得る。システムは、対話型ウェブアプリケーションを介してユーザ入力を受信することに応答してウェブデータストアを更新し得る。第1のワークシートは、第2のワークシートと同じワークシートまたは異なるワークシートであり得る。
【0032】
別の態様によれば、任意の1つまたは複数の実施形態は、表示のためにスプレッドシートの少なくとも一部を提示するスプレッドシート・ユーザインターフェースを生成することをさらに含み得、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート内の1つまたは複数のデータソースを識別することおよびスプレッドシート内の1つまたは複数のユーザインターフェース・テンプレートを識別することを可能にする1つまたは複数の制御を備える。次いで、対話型ウェブアプリケーションの特定のウェブページを生成することは、特定のウェブページに対応する少なくとも1つまたは複数のユーザインターフェース・テンプレートを識別する1つまたは複数の制御を介してユーザ入力を受信することに応答して行われ得る。
【0033】
1つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、スプレッドシート・ユーザインターフェースは、セルの二次元配列を備える。スプレッドシート・ユーザインターフェースのセルは、数値、テキスト値、および式をサポートし得る。スプレッドシート・ユーザインターフェースにおけるセルの式は、ユーザが数学的計算を指定することを可能にし得る。スプレッドシート・ユーザインターフェースにおけるセルの式は、複数の他のセルへの参照を可能にし得る。スプレッドシート・ユーザインターフェースにおけるセルの式はまた、数式および文字列操作関数をサポートし得る。
【0034】
随意的に、スプレッドシート・ユーザインターフェースにおけるセルの式は、名前付き関数への参照をサポートし、スプレッドシート・ユーザインターフェースのセルは、スプレッドシート・ユーザインターフェースの所与の行、所与の列、または所与の領域内の異種のフォーマットおよび式をサポートし、および/または、スプレッドシート・ユーザインターフェースにおけるセルの式は、他の式、数値、またはテキスト値を含む他のセルへの参照をサポートし得る。
【0035】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート・ユーザインターフェースのセルを編集およびフォーマットすることを可能にする視覚編集ユーザインターフェースを提供し、視覚編集ユーザインターフェースは、フォーマットの変更、式の変更、およびフォーマット評価値および/またはルールに基づいてユーザに視覚フィードバックを提供し得る。
【0036】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、他のセルの内容が複数の行または複数の列にわたって視覚的にスパンし得るかどうかに影響を及ぼさずに、単一セルの内容が複数の行または複数の列にわたって視覚的にスパンし得ることをユーザが示すことを可能にし得る。
【0037】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザが単一セルまたはセルの範囲を強調表示するべくそれらと対話することによってセルを選択するおよびセルの内容を他のセルに移動することを可能にし得る。
【0038】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザが1つまたは複数のセルへの参照を現在編集中のセルの式に自動的に挿入するためにそれらのセルを選択することを可能にし得る。
【0039】
いくつかの実施形態では、ユーザ入力は、署名および署名に関連するメタデータを備え得る。
【0040】
いくつかの態様において、webifierシステムは、モバイルデバイスまたはモバイルアプリケーションによる表示のためにモバイルソフトウェアアプリケーションおよび/またはコンテンツを生成し得る。webifierシステムは、スプレッドシート内の1つまたは複数のデータソースを決定し、各データソースは、1つまたは複数のデータレコードを有し得る。webifierシステムは、スプレッドシート内の1つまたは複数のユーザインターフェース・テンプレートを決定し、各テンプレートは、データソースのうちの1つまたは複数に関するデータフォーマットを備え得る。webifierシステムは、随意的に、スプレッドシート内で識別されるデータソースからのデータレコードを備えるデータストアを生成し得る、または、スプレッドシートをデータストアとして用い得る。webifierシステムは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに基づいて特定のウェブページの複数のバージョンを生成し得、特定のウェブページは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートに基づいて識別される1つまたは複数のデータソースを参照し、特定のウェブページのバージョンのうちの少なくとも1つは、モバイルクライアントに関連する1つまたは複数のユーザインターフェース・テンプレートに基づくモバイルバージョンである。webifierシステムは、例えば、要求がユーザデバイスをモバイルクライアントまたはデバイスとして識別する場合に、モバイルデバイスから対話型ウェブアプリケーションの特定のウェブページの提示に関する要求を受信し得る。要求に応答して、webifierシステムは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートおよびモバイルクライアントに関連する1つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされる1つまたは複数のデータレコードを含む特定のウェブページのモバイルバージョンの提示を生成し得る。webifierシステムは、モバイルデバイスからユーザ入力を受信することに応答してデータストアを更新し得る。
【0041】
別の態様によれば、および任意の他の態様または実施形態との組み合わせにおいて、webifierシステムは、データファイルのデータレコードを提示するスプレッドシー
ト・ユーザインターフェースを生成し得、スプレッドシート・ユーザインターフェースは、データレコードを、複数のセルを備える行および列の表形式で表示し、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート・ユーザインターフェースの第2のセルの値に基づいてスプレッドシート・ユーザインターフェースの第1のセルの値を計算するべく式を定義することを可能にする。
【0042】
スプレッドシート・ユーザインターフェースは、数値、テキスト値、および式をサポートするセルの二次元配列を含み得る。スプレッドシート・ユーザインターフェースにおけるセルの式は、ユーザが数学的計算、複数の他のセルへの参照、名前付き関数(および/または領域)への参照、および/または数式および文字列操作関数を指定することを可能にする。
【0043】
いくつかの態様において、スプレッドシート・ユーザインターフェースのセルは、スプレッドシート・ユーザインターフェースの所与の行、所与の列、または所与の領域内の異種のフォーマット、および/または他の式、数値、またはテキスト値を含む他のセルへの参照をサポートし得る。
【0044】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート・ユーザインターフェースのセルを編集およびフォーマットすることを可能にする視覚編集ユーザインターフェースを提供し、視覚編集ユーザインターフェースは、フォーマットの変更、式の変更、およびフォーマット評価値に基づいてユーザに視覚フィードバックを提供し得る。
【0045】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、他のセルの内容が複数の行または複数の列にわたって視覚的にスパンし得るかどうかに影響を及ぼさずに、単一セルの内容が複数の行または複数の列にわたって視覚的にスパンし得ることをユーザが示すことを可能にし得る。
【0046】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザが単一セルまたはセルの範囲を強調表示するべくそれらと対話することによってセルを選択するおよびセルの内容を他のセルに移動することを可能にし得る、および/または、ユーザが1つまたは複数のセルへの参照を現在編集中のセルの式に自動的に挿入するためにそれらのセルを選択することを可能にし得る。
【0047】
別の態様または実施形態によれば、webifierシステムは、対話型ソフトウェアアプリケーションを生成し得る。webifierシステムは、それぞれ1つまたは複数のデータレコードを有する1つまたは複数のデータソースを識別するべくスプレッドシート(単数または複数)を分析(または処理、決定、取得など)し得る。webifierシステムは、それぞれ1つまたは複数のデータソースに関するデータフォーマットを備える1つまたは複数のユーザインターフェース・テンプレートを識別するべくスプレッドシート(単数または複数)を分析(または処理、決定、取得など)し得る。webifierシステムは、随意的に、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することにより、ウェブデータストアを生成し得る、またはwebifierシステムは、スプレッドシート(単数または複数)をウェブデータストアとして用い得る。対話型ソフトウェアアプリケーション内で特定のウェブページを作成する要求に応答して、webifierシステムは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートを識別し、特定のウェブページに対応する1つまたは複数のデータソースを識別し、識別した1つまたは複数のユーザインターフェース・テンプレートに基づいておよび1つまたは複数の識別したデータソースに基づいて特定のウェブページを生成し得る。webifie
rシステムは、特定のウェブページに関するクライアントデバイスからの要求に応答して、1つまたは複数の識別したデータソースに基づいてウェブデータストアから1つまたは複数のデータレコードを取得し、1つまたは複数の識別したユーザインターフェース・テンプレートに従ってフォーマットされる1つまたは複数の取得したデータレコードを含む特定のウェブページを提供し得る。webifierシステムは、ウェブアプリケーションを介してユーザ入力を受信することに応答してウェブデータストア(または適用できる場合はスプレッドシート)を更新し得る。
【0048】
別の態様または実施形態によれば、webifierシステムは、対話型ウェブアプリケーションを生成し得る。webifierシステムは、それぞれ1つまたは複数のデータレコードを有する1つまたは複数のデータソースを識別するべくスプレッドシート(または複数のスプレッドシート)を分析(または処理、決定、取得など)し得る。webifierシステムはまた、それぞれ1つまたは複数のデータソースに関するデータフォーマットを備える1つまたは複数のユーザインターフェース・テンプレートをスプレッドシート(単数または複数)内で識別し得る。webifierシステムは、随意的に、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することにより、ウェブデータストアを生成し得る、またはwebifierシステムは、スプレッドシート(単数または複数)をウェブデータストアとして用い得る。webifierシステムは、対話型ウェブアプリケーション内の特定のウェブページに関する第1の要求に応答して、ウェブデータストア(またはスプレッドシート(単数または複数))からのデータレコードを用いて特定のウェブページを作り得、この場合、データレコードは、特定のウェブページに対応する1つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされる。webifierシステムは、ウェブデータストアを生成した後でなされた1つまたは複数の変更を識別するべくスプレッドシートを分析し、スプレッドシートになされた1つまたは複数の変更を用いて対話型ウェブアプリケーションを更新し得る。特定のウェブページに関する第2の要求に応答して、webifierシステムは、スプレッドシートになされた1つまたは複数の変更を組み込む特定のウェブページを作り得る。
【0049】
いくつかの態様において、スプレッドシートになされた1つまたは複数の変更は、ユーザインターフェース・テンプレートへの編集を含み得、スプレッドシートになされた1つまたは複数の変更を組み込む特定のウェブページを作ることは、データレコードを変えずに、ユーザインターフェース・テンプレートへの編集を組み込む特定のウェブページを生成することを含む。
【0050】
いくつかの態様において、スプレッドシートになされた1つまたは複数の変更が、データレコードへの編集を含む場合、スプレッドシートになされた1つまたは複数の変更を組み込む特定のウェブページを作ることは、ユーザインターフェース・テンプレートを変えずに、データレコードへの編集を組み込む特定のウェブページを生成することを含み得る。
【0051】
本明細書で説明される第1の態様は、少なくとも1つのウェブページを備える対話型ウェブアプリケーションを生成するための方法、システム、およびコンピュータ可読媒体を提供し得る。本方法は、スプレッドシート内の少なくとも1つの一次データソースを決定することを含み得る。一次データソースは、スプレッドシートの第1のワークシートに対応し得る。少なくとも1つの二次データソースは、スプレッドシートの異なる第2のワークシートに対応するスプレッドシート内で決定され得る。本方法は、一次データソースのレコードと二次データソースのレコードとの間の関係を決定し得る。本方法は、自動的に、かつこの決定された関係に基づいて、一次データソースのレコードの少なくとも一部および二次データソースのレコードの少なくとも一部を備える第3のワークシートを生成し
得る。第3のワークシートは、一次データソースのレコードおよび/または二次データソースのレコードの間接的なビューを含んでもよい。第3のワークシートのコンテンツは、第1のワークシートのコンテンツおよび第2のワークシートのコンテンツと同期され得る。本方法は、特定のウェブページに対応する少なくとも1つのユーザインターフェース・テンプレートに基づいて対話型ウェブアプリケーションの特定のウェブページを生成し得る。特定のウェブページは、特定のウェブページに対応する少なくとも1つのユーザインターフェース・テンプレートに基づいて識別される第3のワークシートのレコードを参照し得る。本方法は、対話型ウェブアプリケーションの特定のウェブページに関連する入力制御を介してユーザ入力を受信し、受信したユーザ入力に基づいて、かつ、決定された関係に基づいて、一次データソースおよび/または二次データソースの少なくとも1つのレコードを更新し得る。
【0052】
いくつかの実施態様では、本方法は、一次データソースおよび二次データソースを識別するスプレッドシート内の第1のユーザインターフェース・テンプレートを決定し得る。これに応答して、本方法は、第1のユーザインターフェース・テンプレートに基づいて関係を決定し、その関係に基づいて第3のワークシートを生成し得る。本方法は、ユーザから付加的な情報を受信することにより、かつ/または本明細書でさらに説明される手がかりなどのデータの1つまたは複数の特徴に対応する情報に基づいて自動的に関係を検出することなどによって、一次データソースと二次データソースとの間の関係を識別する他の方法を含み得る。対応するシステムおよびコンピュータ可読媒体も開示される。
【0053】
前述のどの特徴も、どの特定の態様または実施形態と共に用いられてもよいことに留意されたい。上記の実施形態の特徴および本明細書で説明されるものの多くの組み合わせ、修正、または変更が、当業者にはすぐに分かるであろうし、それらは本発明の一部をなすことを意図されている。一実施形態または例に関係して具体的に説明した特徴のいずれも、どの他の実施形態で用いられてもよい。
【0054】
この特許または出願ファイルは、カラーで作製された少なくとも1つの図面を含む。彩色図面を伴うこの特許または特許出願公開のコピーは、請求および必要な料金の納付後に、米国特許商標庁により提供されることになる。
【0055】
同様の参照番号が同様の特徴を示す添付図を考慮して以下の説明を参照することによって、本明細書で説明される態様およびその利点のより十分な理解が得られるであろう。
【図面の簡単な説明】
【0056】
【
図1】本明細書で説明される1つまたは複数の例示的な態様と共に用いられ得るシステムアーキテクチャを例示する図である。
【
図2】本明細書で説明される1つまたは複数の例示的な態様に係る迅速なソフトウェアアプリケーション開発を行う方法である。
【
図3A】本明細書で説明される1つまたは複数の例示的な態様を実装するのに用いられ得る例示的なソフトウェアシステムアーキテクチャを示す図である。
【
図3B】本明細書で説明される1つまたは複数の例示的な態様を実装するのに用いられ得る例示的なソフトウェアシステムアーキテクチャを示す図である。
【
図4】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図5】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図6】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図7】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図8】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図9】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図10】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図11】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図12】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図13】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図14】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図15】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図16】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図17】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図18】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図19】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図20】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図21】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図22】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図23】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図24】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図25】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図26】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図27】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図28】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図29】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図30】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図31】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図32】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図33】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図34】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図35】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図36】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図37】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図38】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図39】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図40】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図41】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図42】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図43】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図44】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図45】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図46】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図47】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図48】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図49】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図50】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図51】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図52】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図53】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図54】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図55】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図56】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図57】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図58】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図59】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図60】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図61】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図62】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図63】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図64】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図65】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図66】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図67】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図68】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図69】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図70】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図71】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図72】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図73】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図74】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図75】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図76】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図77】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図78】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図79】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図80】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図81】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図82】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図83】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図84】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図85】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図86】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図87】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図88】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図89】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図90】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図91】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図92】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図93】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図94】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図95】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図96】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図97】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【
図98】本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【発明を実施するための形態】
【0057】
概論として、本明細書で説明される態様は、ソフトウェアアプリケーションの基礎をなす青写真として1つまたは複数のスプレッドシートを用いて複雑なソフトウェアアプリケーションを自動的に生成するように動作可能なローコード/ノーコードの方法およびシステムを提供し得る。いくつかの態様によれば、結果として得られるソフトウェアアプリケーションは、静的(読出し専用)であり得る、または、ユーザが、例えば、1つまたは複数のオンラインウェブページを介して、アプリケーションデータを動的に追加する、削除する、編集する、または他の方法で修正することを可能にするべく対話型(読み出し/書き込み)であり得る。データ転送は、青写真のスプレッドシートと結果として得られるソフトウェアアプリケーションとの間で一方向または双方向であってよく、いくつかの実施形態では、これにより、修正されたデータが、ソフトウェアアプリケーションとスプレッドシートフォームとの間で転送される、オリジナルのスプレッドシート(単数または複数)に返送されるまたは新しいスプレッドシート(単数または複数)へ転送されることを可能にする。
【0058】
本明細書で用いられる場合のスプレッドシートは、データが格納されるフォームに関係
なく、ユーザに提示するためのデータの論理配列を指す。スプレッドシートソフトウェアアプリケーション(例えば、MICROSOFT EXCEL、APPLE NUMBERS、およびGNOME GNUMERIC)は、データがグリッドの行および列に配列されるスプレッドシートをユーザが作成および編集することを可能にする良く知られたタイプのソフトウェアであり、操作するおよび計算に用いることができる。スプレッドシートソフトウェアアプリケーションはまた、コンピュータ上でローカルにまたはクラウドベースのアーキテクチャで使用可能な、データの表形式での編成、分析、およびストレージのための対話型コンピュータアプリケーションを指し得る。スプレッドシートは、集計用紙のコンピュータシミュレーションであるとも言われている。スプレッドシートソフトウェアアプリケーションは、一般に、スプレッドシートのセルに入力されたデータで動作し、スプレッドシートの各セルは、数値データ、テキストデータ、或いは数式、1つまたは複数の他のセルの内容、またはさらには外部リンクされるデータに基づく値を自動的に計算および表示する式の結果を含み得る。1つの例示的な態様によれば、スプレッドシートは、特定のスプレッドシートソフトウェアアプリケーションにより使用可能なデータファイルとして定義され得る。1つまたは複数のスプレッドシート・ドキュメントまたはデータファイルは、同じおよび/または異なるファイルから他のスプレッドシート/ワークシートのデータを参照するまたはしない場合がある複数の個々のおよび/または別個のスプレッドシート(例えば、ワークシート、タブ)を備え得る。ある点では、スプレッドシートがデータベース用途と非データベース用途との両方をサポートするのに対し、データベースが通常は1つまたは複数のインデックス付きテーブルにデータが格納されることを必要とすることに限って言えば、スプレッドシートは、データベースとは異なる。本明細書で説明される例示的な態様は、ローカルのスプレッドシートアプリケーションソフトウェアに関係し得る。しかしながら、他の例示的な態様では、スプレッドシートは、データが最終的に格納される機能またはフォーマットを提供するバックエンドのシステムアーキテクチャに関係なく、ウェブブラウザまたは他のネットワーク化されたユーザインターフェースを通じてスプレッドシート関数および特徴をユーザに提示する、クラウドベースのシステムのユーザインターフェースを介してユーザに提示され得る(例えば、GOOGLE
SHEETS、MICROSOFT OFFICE ONLINE、EditGrid、ZK Spreadsheet、Sheetster、Smartsheet、DHTMLX Spreadsheet、Webix、eXpresso、ThinkFree
Cell)。本明細書で説明される態様は、ローカルのスプレッドシートアプリケーションソフトウェア実装とクラウドベースのスプレッドシート実装との両方、または任意の他のスプレッドシート実装に適用され得る。
【0059】
スプレッドシートアプリケーションは、ユーザにより閲覧されるときに、通常は、共通して、行および列のセルの特徴的な二次元配列、もしかすると付加的な二次元配列として表される任意の付加的なディメンション、ユーザにより入力された数値またはテキスト値または式を含むことができるセル、およびユーザが数学的計算を指定することおよび/または二次元配列内のセルの位置により複数の他のセルを参照することを可能にするセルの式を有する。MICROSOFT EXCELおよびGOOGLE SHEETSを含むいくつかの現代の複雑なスプレッドシートアプリケーションは、往々にして、共通して、数式または文字列操作式とすることができるセルの式、他の式または数値またはテキスト値を含む他のセルを参照することができるセルの式、ユーザがビジュアルWYSIWYG(“What You See Is What You Get”)エディタでセルをフォーマットする能力、フォーマットの変更および式の変更および式の評価の結果として生じる値のユーザへの即座の視覚フィードバック、“sum()”または“concatenate()”などの名前付き関数を呼び出すことができるセルの式、“A1:B10”または“A1:A10,C1:C10”などの単一セルまたはセルの範囲とすることができるセル参照、他のセル参照に用いられるべきテキストエイリアスを割り当てることができるセル範囲、ユーザが最初に単一セルまたはセルの範囲を強調表示するべくそれらと
対話することによってセルを選択するおよびセルの内容を他のセルに移動することを可能にするユーザインターフェース、それらのセルへの参照を現在編集中のセルの式に自動的に挿入するためにユーザが1つまたは複数のセルを選択することを可能にするユーザインターフェース、他のセルが同様にスパンすることを必要とせずに単一セルまたは単一セルの内容が複数の行および/または列にわたって視覚的にスパンし得ることをユーザが指定できること、行と列が交換可能であり、したがって、データを回転された配向で入力することもできるようにデータの論理配向に対する最小の制約または無制約、フォーマットおよび値および式がセルの行全体または列全体または領域全体にわたって一貫している必要がないセル、および幅をグループとして変更することができる列、のさらなる特徴のうちの1つまたは複数を有する。すべてのこれらの特徴が、アプリケーションがスプレッドシートソフトウェアアプリケーションとなるのに必要とされるわけではない。
【0060】
種々の実施形態の以下の説明では、本明細書で説明される態様が実施され得る種々の実施形態が例示のために示される、本明細書の一部をなす添付図が参照される。説明した態様および実施形態の範囲から逸脱することなく、他の実施形態が用いられ得ること、並びに、構造上および機能上の修正がなされ得ることが理解される。本明細書で説明される態様は、他の実施形態が可能であり、種々の方法で実施または実行されることが可能である。また、本明細書で用いられる専門語および用語は、説明するためのものであって、限定するものとしてみなされるべきではないことが理解される。むしろ、本明細書で用いられる文言および用語は、それらの広い解釈および意味が与えられるべきである。「含む(including)」および「含む、備える(comprising)」およびその変形の使用は、その後リストされるアイテムおよびその均等物、並びに、付加的なアイテムおよびその均等物を包含するように意図されている。「マウントされる」、「接続される」、「結合される」、「配置される」、「係合される」という用語、および同様の用語の使用は、直接的と間接的との両方でのマウント、接続、結合、配置、および係合を含むように意図されている。
【0061】
図1は、本明細書で説明される1つまたは複数の例示的な態様を実装するのに用いられ得るネットワークアーキテクチャおよびデータ処理デバイスの一例を示す。種々のネットワークノード103、105、107、および109が、インターネットなどの広域ネットワーク(WAN)101を介して相互接続され得る。プライベートイントラネット、企業ネットワーク、LAN、無線ネットワーク、パーソナルネットワーク(PAN)などを含む他のネットワークもまたは代替的に用いられ得る。ネットワーク101は、例示するためのものであって、より少ないまたは付加的なコンピュータネットワークと置き換えられ得る。ローカルエリアネットワーク(LAN)は、あらゆる公知のLANトポロジーのうちの1つまたは複数を有し得る、および、イーサネットなどの様々な異なるプロトコルのうちの1つまたは複数を用い得る。デバイス103、105、107、109および他のデバイス(図示せず)は、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介して、ネットワークのうちの1つまたは複数に接続され得る。
【0062】
本明細書で用いられ図面に描かれる場合の「ネットワーク」という用語は、遠隔ストレージデバイスが1つまたは複数の通信路を介して一緒に結合されるシステムだけでなく、ストレージ能力を有するこのようなシステムにその時々に結合され得る独立型のデバイスも指す。したがって、「ネットワーク」という用語は、「物理ネットワーク」だけでなく、例えば、ストレージ・エリア・ネットワーク(SAN、図示せず)を用いる、すべての物理ネットワークに常駐する単一のエンティティに帰属するデータからなる「コンテンツネットワーク」も含む。
【0063】
コンポーネントは、データサーバ103、ウェブサーバ105、およびクライアントコンピュータ107、109を含み得る。データサーバ103は、本明細書で説明される1
つまたは複数の例示的な態様を行うためのデータベースおよび制御ソフトウェアのアクセス、制御、および管理を全般的に提供する。データサーバ103は、ウェブサーバ105に接続されてよく、ウェブサーバ105を通じて、ユーザが対話するおよび要求したデータを取得する。代替的に、データサーバ103は、ウェブサーバ自体として作用し、インターネットに直接接続され得る。データサーバ103は、ネットワーク101(例えば、インターネット)を通じて、直接または間接的な接続を介して、またはいくつかの他のネットワークを介して、ウェブサーバ105に接続され得る。ユーザは、リモートコンピュータ107、109を用いて、例えば、ウェブブラウザを用いて、データサーバ103および/またはウェブサーバ105と対話し得る。クライアントコンピュータ107、109は、そこに格納されたデータにアクセスするべくデータサーバ103と共同して用いられ得る、または他の目的のために用いられ得る。例えば、クライアントデバイス107から、ユーザは、当該技術分野では公知のインターネットブラウザを用いて、またはコンピュータネットワーク(インターネットなど)上でウェブサーバ105および/またはデータサーバ103と通信するソフトウェアアプリケーションを実行することにより、ウェブサーバ105にアクセスし得る。
【0064】
サーバとアプリケーションは、同じ物理マシン上で組み合わされ、別個の仮想アドレスまたは論理アドレスを保持し得る、または、別個の物理マシン上に常駐し得る。
図1は、用いられ得るネットワークアーキテクチャのほんの一例を示し、用いられる具体的なネットワークアーキテクチャおよびデータ処理デバイスは、変化し得るものであり、本明細書でさらに説明されるそれらが提供する機能に従属する。例えば、ウェブサーバ105およびデータサーバ103によって提供されるサービスは、単一のサーバ上で組み合わされてよい。
【0065】
各コンポーネント103、105、107、109は、あらゆるタイプの公知のコンピュータ、サーバ、または他のデータ処理デバイスであり得る。データサーバ103は、例えば、データサーバ103の動作全般を制御するプロセッサ111を含み得る。データサーバ103は、RAM113、ROM115、ネットワーク・インターフェース117、入力/出力インターフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタなど)、およびメモリ121をさらに含み得る。I/O119は、データまたはファイルを読み出す、書き込む、表示する、および/または印刷するための様々なインターフェースユニットおよびドライブを含み得る。メモリ121は、データ処理デバイス103の動作全般を制御するためのオペレーティングシステムソフトウェア123と、本明細書で説明される1つまたは複数の態様を行うようにデータサーバ103に命じるためのwebifier制御論理125と、従属、サポート、および/または本明細書で説明される他の態様と併せて用いられ得る他の機能を提供する他のアプリケーションソフトウェア127、例えば、スプレッドシートソフトウェアアプリケーションをさらに格納し得る。webifier制御論理は、本明細書では、データサーバソフトウェア、webifierシステム、webifierソフトウェア、webifierプラグイン、または簡単にwebifierとも呼ばれる場合がある。データサーバソフトウェアの機能は、制御論理にコード化されたルールに基づいて自動的に行われる動作または決定、システムに入力を提供するユーザにより手動で行われる動作または決定、および/またはユーザ入力に基づく自動処理の組み合わせ(例えば、クエリ、データ更新など)を指す場合がある。
【0066】
メモリ121はまた、第1のデータ129(例えば、スプレッドシート・ドキュメントまたはファイル)および第2のデータ131(例えば、さらに後述するウェブデータストア)を含む、本明細書で説明される1つまたは複数の態様の実行に用いられるデータを格納し得る。デバイス105、107、109は、デバイス103に関して説明したのと同様のアーキテクチャまたは異なるアーキテクチャを有し得る。本明細書で説明されるデータ処理デバイス103(またはデバイス105、107、109)の機能は、例えば、複
数のコンピュータにわたって処理負荷を分散させるために、地理的位置、ユーザアクセスレベル、サービスの品質(QoS)などに基づいてトランザクションを分離するために、複数のデータ処理デバイスにわたって分散され得る。
【0067】
本明細書で説明される1つまたは複数の態様は、本明細書で説明される1つまたは複数のコンピュータまたは他のデバイスにより実行される、1つまたは複数のプログラムモジュールなどの、コンピュータで使用可能なまたは読み出し可能なデータおよび/またはコンピュータで実行可能な命令で具体化され得る。一般に、プログラムモジュールは、コンピュータのプロセッサまたは他のデバイスによって実行されるときに特定のタスクを行うまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のためにその後コンパイルされるソースコードプログラミング言語で書かれ得る、または(限定はされないが)HTMLまたはXMLなどのスクリプト言語で書かれ得る。コンピュータで実行可能な命令は、ハードディスク、光ディスク、リムーバブル格納媒体、ソリッドステートメモリ、USBドライブ、RAMなどの有形の一時的でないコンピュータ可読媒体上に格納され得る。当業者には分かるように、プログラムモジュールの機能は、種々の実施形態において要望に応じて組み合わされるか、または分散され得る。加えて、機能は、集積回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのファームウェアまたはハードウェア均等物で全体的にまたは部分的に具体化され得る。1つまたは複数の態様をより効果的に実装するのに特定のデータ構造が用いられてよく、このようなデータ構造は、本明細書で説明されるコンピュータで実行可能な命令およびコンピュータで使用可能なデータの範囲内で考えられる。
【0068】
一態様によれば、webifierソフトウェアは、既存のスプレッドシートソフトウェアアプリケーション、例えば、MICROSOFT EXCEL内のプラグイン内で用いるためのプラグインまたはモジュールを備え得る。代替的に、webifierソフトウェアは、1つまたは複数のスプレッドシートデータファイル(例えば、MICROSOFT EXCEL.xls/.xlsx workbookファイルまたは任意の他のスプレッドシートデータファイル)および本明細書で説明される1つまたは複数のソフトウェアおよび/またはウェブアプリケーションを入力として受け入れ、かつ出力として生成する、独立型のソフトウェアアプリケーションを備え得る。MICROSOFT EXCELは、単に例示する目的で用いられる。本明細書で説明される原理はまた、他のスプレッドシートソフトウェアアプリケーション、並びに他のスプレッドシート・ストレージフォーマット、スキーマ、および/または規格と共に適用可能である。例えば、COREL
QUATTRO PRO、GOOGLE SHEETS、GNUMERIC、OPENOFFICE CALC、または任意の他のスプレッドシートソフトウェア、アプリケーション、および/またはドキュメントフォーマットが用いられ得る。上記のように、本明細書での態様は、ローカルのスプレッドシートアプリケーションソフトウェア実装とクラウドベースのスプレッドシート実装との両方に等しく適用され得る。
【0069】
図2は、本明細書で説明される1つまたは複数の態様に係るソフトウェアアプリケーションを生成する例示的な方法を示す。最初に、ステップ201で、ユーザ(本明細書では設計者とも呼ばれる)は、設計者が選ぶスプレッドシートソフトウェアアプリケーションを用いてスプレッドシートを作成および/または編集し得る。設計者は、データソースを、各行がデータソースのレコードであるテーブルとして設定および定義し得る、および/または、データソースを、各個々のスプレッドシートがデータソースのレコードであるスプレッドシートファイルとして定義し得る。このようにして、設計者は、1つまたは複数のデータソースを定義し、データレコードを1つまたは複数のデータソースに入力し得る。
【0070】
ステップ203で、webifierソフトウェアは、自動的にまたはユーザ入力に応答して、データソースおよびデータレコードを識別するべくスプレッドシートを分析し得る。ユーザ入力に応答するときに、webifierソフトウェアは、さらに後述するように、どんなタイプのユーザアクションが要求されるかに応じて異なる方法でスプレッドシートを解析し得る。
【0071】
ステップ205で、webifierソフトウェアは、1つまたは複数のユーザインターフェース・テンプレートを識別するべくスプレッドシートを分析し得る。ユーザインターフェース・テンプレートは、1つまたは複数のデータソースに関するデータフォーマット、例えば、フォント、サイズ、色、スタイルなどを含み得る、および/または、それぞれ1つまたは複数のデータレコードを含む場合がある1つまたは複数のデータソースの選択または識別を含み得る。ユーザインターフェース・テンプレートはまた、データソースおよびレコード自体を含み得る。
【0072】
次に、ステップ207で、webifierソフトウェアは、スプレッドシートからのデータを用いてウェブデータストアを生成し得る。ウェブデータストアは、スプレッドシート自体においてまたは生成プロセス中に設計者により設定される1つまたは複数の基準または制限に基づいて、スプレッドシートからのすべてのデータ、またはスプレッドシートからのデータのサブセットのみを含み得る。代替的に、ウェブデータストアは、スプレッドシート自体を備え得る、またはスプレッドシートに含まれ得る。
【0073】
ステップ209で、webifierは、動的な対話型ウェブアプリケーションの一部として1つまたは複数のウェブページを生成し得る。各ウェブページは、ステップ205で識別された1つまたは複数のユーザインターフェース・テンプレートに基づき得る。各ユーザインターフェース・テンプレートは、ウェブページ上に含めるためのデータフォーマットおよび/または1つまたは複数のデータソースを定義および/または識別し得る。各ウェブページは、エンドユーザのブラウザへの送信のためにレンダリングまたは生成されると、ユーザインターフェース・テンプレートに記載された基準を満たすウェブデータストアからデータをポピュレートされ得る。ユーザインターフェース・テンプレートがデータソースおよびレコード自体を備える場合、結果として生じるウェブページは、スプレッドシートにおけるデータに基づく単純なウェブテーブルとして現れ得る。
【0074】
例えば、設計者がユーザインターフェース・テンプレートの一部として対話能力を指定する結果として、または設計者が対応するウェブページを生成するようにwebifierソフトウェアに命じるときに対話能力を必要とする結果として、1つまたは複数のウェブページは、対話型ウェブページとして生成され得る。
【0075】
ステップ211で、ウェブページが対話型のときに、ウェブアプリケーションは、ウェブページを介して、例えば、フォームフィールド、入力ボックス、またはあらゆる他のユーザ入力機構を用いて、1つまたは複数のデータレコードを編集するべくユーザ入力を受信し得る。ステップ213で、ウェブアプリケーションは、ユーザ入力に基づいてウェブデータストアを更新する、例えば、ウェブデータストアに以前に格納されたデータに追加、編集、削除、および/または他の方法で修正を行う。ステップ215で、webifierソフトウェアおよび/またはウェブアプリケーションは、最初にウェブアプリケーションを生成するのに用いられるオリジナルの青写真のスプレッドシートのデータを更新するのに用いられ得る、またはデータを新しいスプレッドシートに出力し得る。青写真のスプレッドシートのデータを置き換えるときに、データの書式設定は保持され、データだけが置き換え/修正され得る。
【0076】
上記の方法は、ウェブソフトウェアアプリケーションに関して説明される。しかしなが
ら、ウェブページの代わりに、webifierソフトウェアは、加えて、かつ/または代替的に、特定の1つまたは複数のコンピュータ上で直接使用するための独立型のソフトウェアアプリケーションを生成してよく、これにより、ソフトウェアアプリケーションを用いるときのネットワークアクセスの必要性が軽減される。これにより、上記の方法は、カスタムのおよび/または複雑なソフトウェアアプリケーションを作成するのに用いられ得る。「複雑な」アプリケーションは、特に、データ入力、レポート、複数のユーザ、ユーザごとのセキュリティアクセス設定、ワークフロー、自動通知システム、履歴情報の保存、すべてのユーザによる変更のロギング、および/またはファイル添付などの複数の特徴を有するアプリケーションを指す。「カスタムの」アプリケーションは、要件がどれほど独自であっても特定のビジネスのニーズに合わせて構築されたソフトウェアを指し得る。このようなカスタムのアプリケーションの結果は、1つの一般的なことを行うように設計された既製の(アウト・オブ・ボックスの)ソフトウェアではないが、カスタムのアプリケーションでも多くの場合にそれを行うことができる。したがって、webifierソフトウェアは、1つの目的に縛られなくてよい。むしろ、webifierソフトウェアは、動的で融通性があり、ソフトウェアのプロダクティビティスイートなどの洗練されたソフトウェアアプリケーションを用いる平均スキルを有する誰でも用いることが可能であり、これにより、カスタムのソフトウェア開発者を雇用することに取って代わるものとして作用し得る。
【0077】
例示的な実装では、システムに少なくとも2つのタイプのユーザまたは人物が存在する。1つは、webifierソフトウェアを使用してソフトウェアアプリケーション、ウェブアプリケーション、またはモバイルアプリケーションを設計する1人または複数の、設計者である。もう1つは、最終結果のウェブページを訪問する、結果的に得られる独立型のアプリケーションまたはモバイルアプリケーションを設計者により概ね意図された方法で使用する人(単数または複数)としての、訪問者またはエンドユーザである。
【0078】
図3Aは、デスティネーションシステム350がWebifier論理353およびメモリ351を備える例示的なソフトウェア・アーキテクチャと、webifier Add-On357がインストールされたスプレッドシートクライアントアプリケーション354(例えば、MS EXCEL)を描画する。Add-On357は、http要求を用いてデスティネーションシステム350からそのインターフェースをロードし得る。
【0079】
図3Aによりさらに例示されるように、設計者は、スプレッドシートアプリケーション354を用いて、馴染みのあるワークシートへのレコードシートおよびテンプレートシートの変更を作成しまたは行い、データの変更が、例えば、ExcelのCOM Interopライブラリを用いるAdd-On357により観察される301a。設計者が変更のグループを完了したときに、Add-On357は、更新された部分的なまたは代替的にすべてのスプレッドシート定義を、web-service API呼び出しを用いてデスティネーションシステム350のWebifier論理353に送信し得る302。Webifier論理353は、新しいデータを処理し、メモリ351(例えば、ウェブデータストア)に格納されたデータを更新し得る303。設計者は、Add-On357を用いてデスティネーションページ構成への変更を作成しまたは行い、これはweb-service API呼び出しとしてWebifier論理コントローラ353に送信され得る302。加えて、設計者は、デスティネーションシステムにアクセスするブラウザ355で変更を作成または行い、これはhttp要求またはweb-service API呼び出しとしてWebifier論理コントローラに送信され得る301b。
【0080】
デスティネーションページを提供するための訪問者のブラウザ356からWebifier論理353へのhttp get要求304に応答して、Webifier論理353は、メモリ351からスプレッドシート定義を取得し得る305。Webifier論
理は、テンプレートシートからの値および書式設定を評価および参照すること、並びに、テンプレートシートに基づいて識別されるレコードシートからの値を評価および参照することにより、スプレッドシート定義をhtmlデスティネーションページに変換する。デスティネーションページは、訪問者のブラウザ356に送信され得る306。
図3Aはさらに、訪問者が見る、テンプレートシートでのみ見受けられ、レコードシートでは見受けられないテキストラベル、RecordSheet!A1から生じるテキストラベル、RecordSheet!C2の評価からの“100”の値、およびRecordSheet、チェックボックスに関するRecordSheet!A2、およびテキストボックスに関するRecordSheet!B2からの値を有するテンプレートシートにより定義されるHTML入力制御を有するページを例示する。
図3Aは、訪問者が、ブラウザ356でチェックボックスをチェックし、サブミットをクリックし、結果的にブラウザがhttp post要求307をWebifier論理コントローラ353に送信することを例示する。Webifier論理353は、メモリ305から現在のスプレッドシート定義をリロードし得る。Webifier論理353は、post要求を処理し、メモリ351を更新されたスプレッドシート定義で更新する。設計者のAdd-On357が依然としてアクティブなセッションを有する場合、Webifier論理353は、更新された部分的スプレッドシート定義、または提示されるスプレッドシート定義を更新するのに十分な変更イベントをAdd-On357に送信し308、次いで、ExcelのCOM
Interopライブラリを用いて、Add-On357は、設計者のワークシートがセルA2に“true”を表示することになるように、更新されたバージョンをスプレッドシートアプリケーション354で設計者に提示し得る309。
【0081】
図3Bは、タイト・インテグレーションという名称のセクションでより詳細に後述する、スプレッドシートとWebifier論理とのタイト・インテグレーションを用いる代替的な例示的なソフトウェア・アーキテクチャを描画する。
【0082】
ここで、本明細書で説明される1つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムの例示的なスクリーンショットを示す
図4~
図98をさらに参照しながら、webifierシステムの例示的な態様に関するさらなる詳細を以下でより詳しく説明する。描画されたスクリーンショットは本質的に例示的なものであって、本明細書で説明されるどの態様の範囲を限定することも意図していない。例示的なスクリーンショットは、webifierを特定のスプレッドシートアプリケーションと共にまたは任意の特定のシステムアーキテクチャと共に用いることに限定することを意図していない。むしろ、スクリーンショットは、ローカルのスプレッドシートアプリケーションまたはクラウドベースのスプレッドシートアプリケーションのいずれと共に用いられるかに関係なく、webifierシステムの種々の特徴および能力を例示する。
【0083】
図4~
図10は、Webifierに特異的な利用可能な式関数を有するAdd-Onがインストールされたスプレッドシートアプリケーションのスクリーンショットである。
【0084】
図11は、訪問者がそのページを訪問するときに見ることができるデスティネーションページのポップアップサムネイルプレビューを示すAdd-Onのページリストのスクリーンショットである。
【0085】
図12は、Add-Onがインストールされたスプレッドシートアプリケーションのスクリーンショットであり、この場合、スプレッドシートアプリケーションのツールバーに付加的なメニューが追加されており、ユーザがログインしており、利用可能なweb-appのリストと共にスプレッドシートアプリケーション側のフレーム内にAdd-Onインターフェースが示されている。
【0086】
図13は、Add-Onがインストールされたスプレッドシートアプリケーションのスクリーンショットであり、この場合、スプレッドシートアプリケーションのツールバーに付加的なメニューが追加されており、ユーザがログインしておらず、ログインページが示されている。
【0087】
図14は、Add-Onがインストールされたスプレッドシートアプリケーションのスクリーンショットであり、この場合、セルの右クリックメニューに付加的なメニューオプションが追加されている。
【0088】
図15は、ゲーミフィケーションのユーザ通知ポップアップのスクリーンショットである。
【0089】
図16は、appのソースにより編成されるweb-appのリストのスクリーンショットである。
【0090】
図17は、web-appのリスト上の1つのappに関するアクティブ化されたアクションメニューのスクリーンショットである。webifierは、
図21のようにweb-appパーミッションが所有設計者により制限されたために、利用可能なapp操作を制限している。
【0091】
図18は、現在選択されたapp“Test-Copy”に関するページの空リストのスクリーンショットである。
【0092】
図19は、web-appのリスト上のアクティブ化された“App Information”ダイアログのスクリーンショットであり、具体的なweb-appについての要約情報が示されている。
【0093】
図20は、Reportページにおいてレコードソースとして参照される伝統的なスプレッドシートテーブルを含むソーススプレッドシート定義と、スプレッドシート定義を用いて定義された結果的に生じるデスティネーションページを例示する図である。この図はさらに、具体的なログイン訪問者“Halee”に関して、webifierがレコードセットを行2のみに絞り込んだことを例示し、この場合、デスティネーションシステム上で評価されるときにセルA2がログインユーザ名と一致し、スクリーンショットの右上で見られる式“=ISLOGGEDINWEBUSER(A2)”がtrueを返している。この図はまた、関数ISLOGGEDINWEBUSERが、設計時間中に交代プレースホルダ値を返したが、デスティネーションページをレンダリングするときにログイン訪問者が既知であったときに適正に評価したことを例示する。
【0094】
図21は、他のユーザと共有されているappのスクリーンショットであり、設計者は、追加の設計者がそのweb-appに関して有することになるパーミッションを指定している。
【0095】
図22は、テンプレートを新しい修正可能なweb-appへシングルクリックコピーするオプションを有するテンプレートメニューのスクリーンショットである。
【0096】
図23は、スプレッドシートアプリケーションで新しいスプレッドシートを作成した後でアップロードオプションをクリックしたユーザのスクリーンショットであり、ここでは、新しいappに名前をつけるべくアップロードダイアログが提示されており、名前は、先に作成したスプレッドシートファイルの名前にデフォルト設定される。
【0097】
図24は、“API_Page”という名前のデスティネーションページに関するSharesタブのスクリーンショットであり、設計者は、該ページ並びに該ページへのアクセスを許されたユーザのリストにアクセスするのにログインが要求されるかどうかを指定している。
【0098】
図25は、ユーザを該ユーザの電子メールアドレスに基づいて該ページへのアクセスを許されたユーザのリストに追加するべくSharesタブから開かれたダイアログのスクリーンショットである。
【0099】
図26は、APIタイプのページが定義されているスクリーンショットであり、これは、プログラムでアクセスすることができるweb-service APIページを作成し、設計者により指定される特定のInsertページに対応する入力を有する。
【0100】
図27は、Calendarタイプのページが定義されているスクリーンショットである。スプレッドシートは、レコードシートを示し、サムネイルは、訪問者が見ることになる複雑な制御を例示する。範囲制御は、レコードシート上の適切な列に設定される。
【0101】
図28は、Calendarタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。
【0102】
図29は、ContainerタイプのページがEasyモードで定義されているスクリーンショットである。
【0103】
図30は、ContainerタイプのページがAdvancedモードで定義されているスクリーンショットである。
【0104】
図31は、ContainerタイプのページがGraphic Designerモードで定義されているスクリーンショットである。
【0105】
図32は、Containerタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。
【0106】
図33は、CSV Importタイプのページが定義されているスクリーンショットである。サムネイルは、ページの訪問者に提示されることになる複雑な制御の組を実証し、ソースは、名前によりワークシート全体に設定される。
【0107】
図34は、CSV Importタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。
【0108】
図35は、Details Reportタイプのページが定義されているスクリーンショットであり、設計者は、名前付き範囲/Defined Nameに基づくテンプレートシートを選択している。このスクリーンショットは、テンプレートソースの参照のための種々のオプションを示している。
【0109】
図36は、Details Reportタイプのページが定義されているスクリーンショットであり、設計者は、スプレッドシートツールのセルから選択されているB9:C12のカスタム範囲に基づくテンプレートシートを選択しており、この場合、設計者はテンプレート定義セクションにおいて“use selected”ボタンをクリックした。
【0110】
図37は、Details Reportタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。このスクリーンショットはまた、スプレッドシートツールのセル上の薄緑色のオーバーレイ、並びに、テンプレート定義内で用いるために設計者が利用可能な機能のリスティングを例示する。機能の詳細は
図4~
図10で定義される。
【0111】
図38は、Edit-Cellsタイプのページが定義されているスクリーンショットである。
【0112】
図39は、Edit-Cellsタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。このスクリーンショットはまた、ヘッダ範囲(Header Range)が、スプレッドシートツールにおける現在選択されたB1:C1セルに基づくカスタム範囲により定義されていることを例示する。
【0113】
図40は、Edit-Cellsタイプのページに関するヘッダ範囲を定義するための種々のオプションのスクリーンショットである。
【0114】
図41は、Edit-Recordタイプのページが定義されているスクリーンショットであり、設計者は、各行が異なるレコードを表すように、ソースレコードシートの配向が行に基づくことを指定している。
【0115】
図42は、Edit-Recordタイプのページが定義されているスクリーンショットであり、設計者は、ページオプションなどのより多くのオプションを選択し、カスタムヘッダ範囲を指定し、ドロップダウンメニューから編集可能範囲を選択している。
【0116】
図43は、Insertタイプのページが定義されているスクリーンショットであり、サムネイルは、デスティネーションページの訪問者によって見られ得る、自動的に生成されるhtmlフォームのプレビューを例示している。
【0117】
図44は、Insertタイプのページに関する種々のオプションのスクリーンショットである。これはさらに、webifierがサポートするデータバリデータのうちのいくつかを例示する。
【0118】
図45は、Linkタイプのページが定義されているスクリーンショットであり、サムネイルは、生成されることになるハイパーリンクのプレビューを例示しているが、式関数は、実際の値ではなくプレースホルダ値を示しており、リンクのクリック時に訪問者が向けられることになるデスティネーションの場所は、特異的なCalendarデスティネーションページとして指定される。
【0119】
図46は、PDFタイプのページが定義されているスクリーンショットであり、サムネイルは、PDFのための基礎として以前に作成したInsertデスティネーションページを設計者が選択することに基づいて生成されることになるPDFに埋め込まれるフォームを有するPDFのプレビューを例示している。
【0120】
図47は、Reportタイプのページが定義されているスクリーンショットであり、この場合、レポートは、別個に定義されたテンプレートシートを有さない。サムネイルは、行レコードシートが、結果的に、行レコードシートのセルと同じ書式設定を有するレコードのすべてをリストアウトするデスティネーションページを生じることを例示する。
【0121】
図48は、Reportタイプのページが定義されているスクリーンショットであり、設計者は、ヘッダ範囲、自動リフレッシュ時間、およびページオプションなどのより多くのオプションを選択している。
【0122】
図49は、Tabs Containerタイプのページが定義されているスクリーンショットであり、この場合、設計者は、タブ内に含まれるべき2つの以前に作成したデスティネーションページを選択した。サムネイルは、ページの最上部に2つの視覚タブを有することになるデスティネーションページを例示し、各タブは、コンテンツのための基礎として以前に作成したページのうちの1つを有している。
【0123】
図50は、Textタイプのページが定義されているスクリーンショットであり、この場合、設計者は、WYSIWYGエディタを用いてリッチテキストを入力することができる。
【0124】
図51は、設計者からのページ追加要求を受信後に追加されるべきページのタイプに関するオプションを提示するシステムのスクリーンショットである。
【0125】
図52は、webifierがスプレッドシートでチャートが利用可能であることを自動的に検出したことによる、Reportタイプのページが定義されているスクリーンショットであり、webifierは、Reportデスティネーションページ上に表示することができるチャートのドロップダウンリスティングを表示する。
【0126】
図53は、Add-Onが、訪問者からの変更が受信および検出されており、自動的にダウンロードされることになるかまたは設計者がそれらを所望の時点で取得するべくダウンロードデータをクリックすることができることをデスティネーションシステムにより通知されているスクリーンショットである。
【0127】
図54は、ページリストのスクリーンショットであり、この場合、設計者は、ページに関するアクションメニューをクリックしており、Add-Onは、ページの複製または削除などのデスティネーションページに関するサポートされる操作オプションを提示している。
【0128】
図55は、Add-Onがweb-appの複製などのweb-app全体に関する種々の操作オプションを有するページリスティング内からのweb-appアクションメニューを表示しているスクリーンショットである。
【0129】
図56は、web-service API呼び出しに関する典型的な使用および要求フォーマットを実証する、外部システムまたはAdd-Onに利用可能なデスティネーションシステムweb-service API関数呼び出しに関する例示的なドキュメンテーションである。
【0130】
図57は、デスティネーションReportページのスクリーンショットであり、Reportページタイプの結果が、左に行レコードがリストされ、最上部にいくつかのリンクを有し、且つチャットをポップアップするべく右にクリック可能なアイコンを有するレイアウトを定義するべくテンプレートシートを用いて定義されていることを例示する。
【0131】
図58は、デスティネーションシステムが、チャットレコードを取得し、チャットオブジェクトが訪問者によりアクセスされた後で新しいチャットを入力することを訪問者に促しているスクリーンショットである。
【0132】
図59は、例示的なスプレッドシートのスクリーンショットであり、この場合、チャットオブジェクトが、どんなグループのチャットレコードが該チャットオブジェクトと関連付けられるかを示すべく、式関数とパラメータとしてパスインされるGUIDで作成されている。この例では、設計時間中にセルに示される可視のプレースホルダテキストは、パスインされるGUIDである。
【0133】
図60は、例示的なスプレッドシートのスクリーンショットであり、いくつかの外部補足データオブジェクト:チャット、ファイル、およびイメージオブジェクトをスプレッドシート内でどのように用いることができるかを例示している。このスクリーンショットは、ファイルに関するGUIDまたはイメージが挿入されないときの#Noneの場合のようにプレースホルダテキスト、またはサイズを示すファイルオブジェクトに関する“10KB”の場合のように式関数(例えば、
図5)へのパラメータとして指定される他のキャプションがどのように存在し得るかを例示する。これはまた、このケースではE7とF7の2つのセルがどのようにして同じ外部データオブジェクトを指すことができるかを例示する。
【0134】
図61は、
図60のスプレッドシートから作成することができるデスティネーションReportページのスクリーンショットである。このページは、どのようにしてプレースホルダテキストが対話型チャットオブジェクトと置き換えられるか、および、セルE7およびF7がここでは該ページが外部補足データオブジェクトの複数の属性を示すことを可能にすることを例示する。
【0135】
図62は、
図61におけるデスティネーションReportページがブラウザからのアップロードダイアログによって付加的なイメージファイルを受け入れる能力を有することのスクリーンショットである。このスクリーンショットはまた、デスティネーションページ上のイメージオブジェクトとの対話により制御が簡潔なテキストラベルからファイルを選ぶのに適切なものへ変更されることと、システムが、訪問者がアップロード先のファイルビンを変更することを可能にする、イメージオブジェクトの式を訪問者が変更することに関するパーミッションを設計者が指定することをサポートすることを例示する。
【0136】
図63は、訪問者がデスティネーションページを介してイメージをイメージオブジェクトにアップロードした後の、該イメージオブジェクトに関する現在格納されたイメージを表示する、
図61におけるデスティネーションReportページのスクリーンショットである。
【0137】
図64は、式関数へのパラメータがGUIDではなく任意のテキスト文字列である場合の、
図60における例示的なスプレッドシートのスクリーンショットである。
【0138】
図65は、設計者がデスティネーションシステムへの接続を許されるプログラムのまたは自動のクライアント、および該クライアントがそれを行うのにどんな認証パラメータが必要とされるかを指定することを可能にするデスティネーションシステム管理ページのスクリーンショットである。
【0139】
図66は、web-appの“Timesheet”からドロップダウンする他のページのナビゲーションメニューを有するデスティネーションシステムページのスクリーンショットである。
【0140】
図67は、web-appがレコードシートとテンプレートシートとの両方のスプレッドシート定義並びに共有設定および通知設定を含む単一の自己完結型のファイルとしてエクスポートされることを可能にする、デスティネーションシステム管理ページのスクリー
ンショットである。
【0141】
図68は、スプレッドシート定義のアップロードを可能にする、デスティネーションシステム管理ページのアップロードダイアログのスクリーンショットであり、
図67からエクスポートされた情報をインポートする同じオプションを有する。
【0142】
図69は、web-appのリスト上の1つのappに関するアクティブ化されたアクションメニューのスクリーンショットである。
図17とは異なり、webifierは、設計者がweb-app上の適切なパーミッションを有するので、“add page”などの付加的な操作へのアクセスを提供している。
【0143】
図70~
図73は、それぞれ
図43、
図45、
図47、および
図50によく似ているが、Add-Onまたは第三者スプレッドシートツールの必要なしに、設計者がInsertタイプ、Linkタイプ、Reportタイプ、およびTextタイプのページを定義することを可能にする、デスティネーションシステム管理ページのスクリーンショットである。
【0144】
図74は、テーブルが列Cの値に基づいてスプレッドシートレコードをフィルタする制御を有することができることを例示し、列H上の日付式などの式を用いるスプレッドシートレコードの付加的なフィルタリングを例示する、伝統的なスプレッドシートテーブルのスクリーンショットである。
【0145】
図75は、任意の外部URLへのウェブページのページタイプをサポートし、必ずしもURLだけでなく様々な可能性あるソースを可能にする、デスティネーションシステム管理ページのスクリーンショットである。
【0146】
図76は、webifierの深くネストされたコンテナを有する能力を例示する、デスティネーションシステム管理ページのスクリーンショットである。
【0147】
図77は、デスティネーションシステム管理ページからの編集能力を有する、Edit-Recordタイプのページに関するデスティネーションシステムがサポートするいくつかの付加的なオプションのスクリーンショットである。
【0148】
図78は、Add-Onではなくデスティネーションシステム管理ページからオプションを編集する能力を有する、Insertタイプのページに関するデスティネーションシステムがサポートする、
図44で見られるものと類似した、いくつかの付加的なオプションのスクリーンショットである。
【0149】
図79は、デスティネーションシステムが他の方法でデータ検証として知られているユーザ入力を制約するオプションを提供することを例示するスクリーンショットであり、この場合、データ検証ルールは、格納されるデータ値のタイプに特異的とすることができる。
【0150】
図80は、デスティネーションシステムがスプレッドシート定義におけるセルの範囲を参照するデータ検証ルールの一部と共にユーザ入力を制約するオプションを提供することを例示するスクリーンショットである。この例では、システムは、シート全体またはシート内のカスタムのセルの範囲をサポートする。
【0151】
図81は、範囲外のものはすべて編集可能ではないように種々のタイプのページ内の編集可能な範囲を修正することのデスティネーションシステムのサポートのスクリーンショ
ットである。これは、“Everything”、名前付き範囲、並びに設計者により指定されるカスタム範囲を用いるなどのエイリアスのサポートを例示する。
【0152】
図82は、任意の外部サイトページ内に埋め込み型デスティネーションページを有するためにデスティネーションシステムが自動的に生成することができるHTMLコードの例である。
【0153】
図83は、外部自動化システムへの通知および複数のタイプの通知のためのweb-service API呼び出しをサポートする、通知設定に関する種々のオプションを例示する、デスティネーションシステムの通知設定ページのスクリーンショットである。
【0154】
図84は、デスティネーションシステムの特定の通知に関する構成オプションのスクリーンショットである。これは、設計者により指定されるURLによるそのwebhook能力、並びに、電子メール能力を例示する。
【0155】
図85は、デスティネーションシステムの特定の通知の電子メールテンプレートに関する構成オプションのスクリーンショットである。
【0156】
図86は、デスティネーションCSV Importページのスクリーンショットであり、webifierが、インポート中にCSVファイルを受け入れ、スプレッドシートを分析することによりそれがリンクされるレコードシートについてのメタデータを利用することができ、レコードシートへの挿入要求のステータスを報告することができることを例示する。
【0157】
図87は、
図86のようなデスティネーションCSV Importページのスクリーンショットであるが、システムが、CSV Importフォームを介してデータが到着するときにデータ検証ルールを実施し、その失敗を報告することができることを例示する。
【0158】
図88は、デスティネーションEdit-Cellsページのスクリーンショットであり、
図38に例示されたAdd-Onインターフェースから定義されているEdit-Cellsページタイプの結果と、ユーザの対話の結果として“edit mode”に切り替える任意のセルに関して変更しているデスティネーションページの制御を例示する。
【0159】
図89は、デスティネーションEdit-Recordページのスクリーンショットであり、定義されているEdit-Recordページタイプの結果、行の削除の結果としてのユーザへの動的通知メッセージ、およびデスティネーションシステムが“Edit”パーミッションおよび“Delete”パーミッションが有効であると決定し、ページ定義がこれらのオプションを有効にしたときのテンプレートシート定義を修正する制御を例示する。
【0160】
図90は、
図89の“Edit Row”ボタンが訪問者によりクリックされているときのデスティネーションEdit-Recordページのスクリーンショットであり、テンプレートシートが定義されていないときに用いられる自動的に生成される入力フォームを例示し、該入力フォームが、スプレッドシート定義によりオプションが定義される場合のドロップダウンなどの制御を有することができることを例示する。
【0161】
図91は、訪問者がフォームに任意のフィールドを記入する前のデスティネーションInsertページのスクリーンショットであり、サブミットがレコードシートを修正したことを確認する訪問者への通知を例示し、デスティネーションページがデータ検証ルール
に基づいてデフォルト値を有するフィールド並びに編集不可フィールドを提示し得ることを例示する。
【0162】
図92は、訪問者が、スプレッドシート定義の関連するセルデータタイプが日付に設定されるフィールドに関するデータを入力するときの、
図91のようなデスティネーションInsertページの訪問者に表示される複雑な対話型制御のスクリーンショットである。
【0163】
図93は、訪問者に失敗を知らせるためのインターフェースへの修正を例示する、訪問者が入力データ検証ルールに失敗した後のデスティネーションInsertページのスクリーンショットである。
【0164】
図94は、サーバ上の管理パーミッションを有する設計者が、特定のロールに関するデスティネーションシステムの管理特徴に関係するアクセスパーミッションを制御することを可能にする、デスティネーションシステム管理ページのスクリーンショットであり、ロールがカスケーディング・パーミッションをもつサブロールを有する能力をさらに例示する。
【0165】
図95は、デスティネーションシステムの種々の粒度が細かい管理パーミッションを例示する、デスティネーションシステム管理ページのスクリーンショットである。
【0166】
図96は、訪問者がデスティネーションシステムにログインするまたはアカウントを作成するための、多数のオプションを有する複雑なパスワードポリシーが可能であることを例示する、デスティネーションシステム管理ページのスクリーンショットである。
【0167】
図97は、スプレッドシートで設計されるソーススプレッドシート定義を例示する図であり、訪問者のために生成されるデスティネーションページ上の内容の書式設定を定義するべく、設計者により多数の書式設定オプションが指定されている。
【0168】
図98は、3つのページタブを有するタブコンテナを含む複雑なデスティネーションページのスクリーンショットであり、第1のページタブは、入力ページ、レポートページ、およびそのソースがチャートであるレポートページから自動的に生成される入力フォームを含む複数のネストされるページをもつネストされるコンテナページを有している。
【0169】
スプレッドシートおよびレコード
単に例示的な参照のために、スプレッドシートの2つの使用スタイルが本明細書で言及される。他のスタイルが代替的に用いられ得る。1つ目は、各レコードがシート全体または多くのシートを危険にさらすファイル全体を備えるシートレコードである。例えば、多くの会社は、作成する販売見積書毎に新しい販売見積書スプレッドシートファイルを保存する。該ファイルは、バックエンド計算に関する1つのシートと印刷可能な見積書を有することを意図する1つのシートなどのいくつかのシートを有する場合があり、印刷可能な見積書シートは、典型的に、すべて該単一の見積書を表す、テキスト、数字、および結果がテキストまたは数字となる式を含む、多くの行および列を有することになる。それらはまた、公正に読み出し可能なプリントアウトを可能にするのに十分な書式設定を含み得る。
【0170】
2つ目は、通常は単一シート内で多くのレコードが一緒に指定される、行レコードおよび行レコードシートである(例えば、
図53の列A~D)。スプレッドシートファイルは、ゼロ、1つ、および/または複数の行レコードシートを有することができる。行レコードシートは、シートの一部(例えば、
図60の列A~B)のみに限られる場合があり、該
シートはその上に付加的な行レコードシートまたは関連のないデータ(例えば、
図60の列E)を有し得るが、簡単にするために、本発明者らは、全体を通して、これを依然として行レコードシートとして言及する。例えば、多くの会社は、以下のようなクライアントをリストするスプレッドシートを有することになる。シートは、“Client”および“Industry”および“Client ID”などのいくつかの列名をもつ最上行1を有し得る。その下の各行は、単一クライアントに関係したデータを有し得る。例えば、行2は、列Aに“Pleasant Solutions”、列Bに“Software Development Services”、および列Cに“1”を有し得る。行3は、列Aに“NewCo”、列Bに“Consulting”、および列Cに“2”を有し得る。名前にかかわらず、行レコードはまた、レコードが列レコードであるかのように左から右にリストされるように行および列がフリップされる目的を有するリストを表す。
【0171】
ステップ201~203中に、上記のいずれかまたは両方の技術が用いられてよく、これにより、webifierソフトウェアが、あらかじめ定められたまたは事前に暗示された目的をもたない、複雑な、マルチユーザの、完全にカスタムのデスティネーションソフトウェアを作成するのに用いられることが可能となる。独立型のウェブまたはモバイルアプリケーション(ウェブおよびモバイルは、便宜のため総称して「web-app」と呼ばれる場合がある)は、プログラミングまたはデータベース経験の必要なしに作成され得る。本明細書で説明されるいくつかの態様は、データ、カスタムのユーザインターフェース、異なる閲覧デバイス能力、同時使用、データおよびユーザワークフロー、自動通知、スケジュールされたイベント、ビジネス論理などを含む複雑なシナリオに関してでさえも、カスタムのソフトウェア開発会社を雇用する必要性に取って代わることを意図し得る。
【0172】
テンプレートシート
ここで、例示的な実装を参照してユーザインターフェース・テンプレートに関してステップ201および205をより詳細に説明する。伝統的なスプレッドシートアプリケーション、クラウドおよびウェブベースのスプレッドシート、またはウェブアプリケーション内に埋め込まれた簡易化されたスプレッドシート・インターフェースのいずれで行われるかに関係なく、スプレッドシートツールは、訪問者またはレポートレイアウトに関する所望のユーザインターフェースを表すスプレッドシートを作成するのに用いられ得る。例えば、テンプレートは、単一の見積書に適切であろう値および式を含む多くの行および列を有する1つのシートを有することもできる:最上部付近にクライアントの大きいフォントテキストタイトル、その後に“Invoice Number”として第1の値を有する行、およびその右に実際のインボイスナンバーを表示することを意図されるセル。その下のいくつかの行は、コメントをイタリック体で表示することを意図された、複数の行および列にわたるセルを有し得る。シートの最下部付近に“Subtotal”とラベル付けされるセル、その右に、該特定のインボイスの合計を表す数字を有することを意図された、“$”記号で通貨を指定するセル書式設定を有するセル(このとき該セルはグリッド上のC15の位置を有する)。次の行は、税および税の後に合計に関係したセルを有し得るが、後でそこに配置される値を有することを意図するのではなく、税および合計セルは、“=C15*10%”などの小計セルの場所を参照するスプレッドシート式を有することになり、この場合、C15への変更は、これらの式に基づく合計に影響を及ぼすことが意図される。
【0173】
テンプレートシートは、親テンプレートとネストされるテンプレートとの多対多の関係性でおよび/またはいくつかの深さレベルになどでネストされ得る(
図76)。一態様によれば、webifierソフトウェアは、セル範囲参照またはどんなテンプレートシートが用いられるべきであるかに関するテンプレート識別子を受け入れる“USETEMP
LATE()”などのスプレッドシート式関数を定義し得る。式が用いられるセルは、セルのサイズに基づいてネストされるテンプレートに割り当てられるセルの場所、または幅および高さに基づいて、ネストされるテンプレートシートをどこに挿入するかなどの特定の情報を暗黙的に提供し得る。テンプレートにポピュレートするためのソースレコード(単数または複数)が親テンプレートと同じではない場合、パラメータをUSETEMPLATE関数にパスインすることもでき、これは、(さらに後述するように)ネストされていないテンプレートシートがいくつかのページタイプに関してするのとほぼ同じように、ソースデータが何であるかをテンプレートが知ることを可能にすることになる。これは、異なるレコードシート上のレコードからポピュレートされる必要がある“invoice
items”のリストをその内部に含むインボイステンプレートなどのシナリオを可能にする。典型的に、このようなネストされるテンプレートシートは、親テンプレートの行または列のアラインメントに影響を及ぼさずに十分な幅および高さを表示することを可能にするのに伝統的なスプレッドシートの“merge cells”特徴、並びに、特定のインボイスに属するこれらのインボイスアイテムのみへのレコードのフィルタリング(以下で説明される)を提供するのに伝統的なテーブル特徴を利用することになる。
【0174】
webifierソフトウェアは、テンプレートシートのセルが、該テンプレートシート内の他のセル、他のテンプレートシート内のセル、レコードシートデータ、または同じセル内の上記のすべての組み合わせを参照する式を有することを可能にし得る。説明した技術はまた、基礎をなすソース参照が同一であるまたは部分的に重複する場合であっても、デスティネーションシステムの訪問者が同時に利用できるようにするために、1つまたは複数のテンプレートが入力機能のために用いられることおよび1つまたは複数の異なるテンプレートが出力機能のために用いられることを可能にする。式は、通常、本質的に宣言であるが、任意のスプレッドシートツールおよび/または新しいフォーマットまたは構文によりサポートされる任意の1つまたは複数の式が用いられ得る。
【0175】
レコード式(TEMPLATE INDICATORS)を有するまたはシートデータを参照するシートテンプレート
スプレッドシートツールでテンプレートシートを設計している間、特定のレコードまたは多くのレコードから導出される集計値を表すことを意図しているセルは、ブランクと評価され得るおよび/または設計者に書式設定を示すこと以外のシステムへの影響を有さないプレースホルダ値を有し得る。外部リストまたはデータベースは、C15などのセルの場所の相互参照と、インボイスの小計を表示するなどのそれらの意図された目的を含み得る。代替的に、テンプレートシートからレコードシートセルが参照可能である場合、レコードを指すこれらのセルに式またはプレースホルダ式を挿入することができる。例えば、テンプレート上のクライアントタイトルセルは、“=ClientList!A1”であり、これはもしかするとプレースホルダとして設計時間中にスプレッドシートツールによってテキスト“Client”へ評価されることになり、またはおそらく、この式は、“=ClientList!A2”であって、これはもしかするとプレースホルダとして設計時間中に“Pleasant Solutions”としてスプレッドシートツールによって分解されることになる。加えて、“=ClientList!A:A”または”=ClientList!A1: A1000”を参照し、結果的に、結果的に、ブランク、エラー、または意図せぬ値を生じることがある。上記のケースのそれぞれにおいて、設計時間中に結果を生じるテキストは、設計時のプレースホルダにすぎず、訪問者に関するなどの後の時点での実際の評価中にwebifierを支援するためにClientList上のどの列がテンプレートに記入する際に用いられるべきかの有用な情報を有する式自体ほど重要ではない。便宜上、この概念は、概してTemplate Indicatorと呼ばれることがある。
【0176】
Template Indicator式は、設計者がタイプするまたはデータの利用
可能なまたは関連する列のリストからドラッグおよびドロップすることから導出することもできる。この式は通常、スプレッドシートツールのセル参照(“ClientList!A1”または指定されたテーブルの場合、“ClientList!Client”)、この目的のために特化されたアクションをトリガする典型的な関数呼び出し構文(“=GetRowRecordData(“Client”)”)とすることができるか、またはそれらは“[[Client]]”などの特化された別個の式とすることができる。式は、スプレッドシートに典型的なようにセルに格納されてよく、またはそれらは、それらがどんなセル上に適用されるかについての情報と共に、式の特別な外部リストに格納することもできる。
【0177】
複数のデータソース
設計者がレコードの一次セットを行レコードシートに持つことと、別のシート(二次データソース)の1つまたは多くの「二次レコード」を持つことを望む場合、レコードセット間の多くの種類の関係が可能である。設計者が1つまたは複数の二次データソースを指定するとき、webifierは、テンプレートシート内で見出された参照をどのようにポピュレートするかを決定するために、設計者から関係の種類を決定するための付加的な情報を要求し得る。
【0178】
テンプレートをポピュレートする選択された一次レコードが変化し得るとしても、潜在的に変化しない、二次データソースからの単一のレコードのみがテンプレートによって使用される場合、システムは、設計者がテンプレートによって使用される二次データソースから単一の二次レコードを選択するための1つまたは複数の基準を指定することを可能にし得る。例えば、レコードの一次セットがインボイスのリストであり、テンプレートが訪問者が選択した任意の特定のインボイスの提示である場合、「ロゴ」シートからの二次データソースは、設計者によって指定されて、インボイスを発行する会社と共にテンプレートを装飾するための会社名およびロゴを提供し得、基準は、「インボイスロゴ」である必要がある二次列Aに設定され、1つのレコードのみがロゴシートから使用されるようにする。
【0179】
基準は、テンプレートが行うのと同じ方法で一次データソースからのデータを参照するか、または一次データソースを参照するテンプレート上のセルを間接的に参照することによって、選択された一次レコードに基づいてもよい。例えば、インボイステンプレートは、「フラグ」シートからの二次データソースを有し得、基準は、「顧客の国」に一致するように求められて二次列Aに設定され、その結果、1つの二次レコードがテンプレートに使用されるが、選択されたインボイスに応じて変化する。
【0180】
二次データソースからの1つまたは複数のレコードがテンプレートによって使用される場合、基準は、二次データソースから複数のレコードを選択することをもたらし得る。二次データソース上のデータの列への参照は、いくつかのレコード値の連結に対して評価されてもよく、見出された第1のレコード値だけであってもよく、またはテンプレートは、それぞれが二次データ値の1つを有する複数のセルをポピュレートするように指定されてもよい。テンプレートは、複数の行または列にまたがるセル内の二次データソースへの参照を有することによって、これを指定し得る。あるいは、テンプレートは、二次データ値の提示を定義するために使用するネストされたテンプレートを指定し得る。ネストされたテンプレートの指定は、テンプレート内の“USETEMPLATE( )”などのスプレッドシート式関数を使用することによって、テンプレート上にフローティングまたはアンカー制御をドラッグおよびドロップすることによって、テンプレートに関連するwebifier内のオプションを利用して、ネストされたテンプレート、上記の組み合わせ、および/またはその他を挿入するためにテンプレート内の場所を指定することによって行うことができる。ネストされたテンプレートの境界は、USETEMPLATE関数への
パラメータとしてセルをマージし、シートの外部であるが、ネストされたテンプレートまたは親テンプレートに関連するwebifier内のオプションを指定し、セルを色分けし、セルの周りの境界線を描画し、かつ/またはネストされたテンプレートの境界を表すように指定されたセルの領域を選択することによって指定することができる。テンプレートのネストは、セルの挿入をもたらし、既存のテンプレートセルを下および/または左にシフトさせて、該当する二次データ値のすべてを表示するための適切な余地を提供し得る。
【0181】
オートゲンおよび仮想シート
いくつかの態様によれば、webifierは、設計者の作業を容易にするために、他のシートおよび/またはテンプレートに基づいてシートを自動的に生成し得る。上記のように、行レコードシートは、単一のシートの多くのレコードを整理し得る。webifierによって自動的に生成される行レコードシート、またはそれ以外の場合、スプレッドシートアプリケーションによって生成される行レコードシートは、「オートゲン」シートと称され得る。本明細書においてwebifierを参照して説明されるが、当業者であれば、以下にさらに説明される特徴を有するシートは、webifier以外のスプレッドシートアプリケーションに使用され得ることを理解するであろう。
【0182】
webifierは、ページを定義する際の複数のデータソースの選択、テンプレート内またはネストされたテンプレートを介しての複数のデータソースの参照、行レコードシート間の関係の識別、および/または明示的な要求を含むがこれらに限定されない様々な設計者アクションに応答して、行レコードシート(「オートゲン」シート)を自動的に生成し得る。適切な設計者アクションに応答して、webifierは、以下でさらに説明される様々な方法でオートゲンシートを生成し得る。
【0183】
設計者定義および/またはオートゲンシートは、完全に仮想であり得、各セルは、以下に記載される特徴を有するか、または部分的に仮想であり得、特徴のうちのいくつかのみを有するか、かつ/またはそれらをいくつかのセル、列、および/または行のみに適用する。従来のスプレッドシートアプリケーションは、典型的には、別のセルを定義する際の1つのセルの2つの使用方法を可能にする。これらの典型的な方法は、いずれも「非仮想」と称され得る。第1の方法では、セルA1が“=1+z1”として定義され、B1がA1に基づくことになる場合、従来のスプレッドシートツールは、ユーザがA1の定義をB1にコピーおよびペーストすることを可能にする(定義による1回使用)ことで、B1は現在定義“=1+z1”を有することになるが、しかしながら、この場合、A1へのその後の変更はB1に反映されない。第2のタイプでは、従来のスプレッドシートツールは、ユーザが式“=A1”をB1に入力することを可能にし(参照により使用する)、その後のA1への変更はB1に反映されるであろうが、セルの選択および使用全体がB1の式内で定義されているために、ルックアップの結果、または部分的にはか関係に応じて使用するセルの選択が変化するなど、ユーザが宣言し、読み取り、かつ維持するためにB1内の式が複雑になるケースがある。どちらの非仮想方法においても、B1への任意の修正は自動的にA1に影響を与えず、フォーマットの変更はどちらの方向にも反映されない。
【0184】
本明細書に記載される態様は、セルの使用の第3の方法が別の方法を定義することを可能にし得、これは、「仮想ビュー」または単に「仮想」参照方法と称され得る。この仮想参照方法では、別のセルの仮想ビューとして動作するセルは、対応するセルのコンテンツを表示するために自動的に同期され得、対応するセルへのすべての変更(例えば、参照されるセルへの変更に応答して、そのセルの式、書式設定、または更新された値の変更)を同一に反映し得る。仮想方法では、A1へのその後の変更がB1に反映されてもよく、ユーザがB1を維持するのはそれほど複雑ではなく、B1への変更がA1に反映されてもよく、B1への変更がA1に影響を及ぼしてもよいため、任意の数のビューが自動的にすべ
てのビューに影響を及ぼすように変更されてもよい複数の仮想ビューが存在し得る。オートゲンシートと同様に、当業者は、本明細書に記載される仮想参照および仮想シートが、ここで論じられるwebifierの例示的な実施態様を超えて使用および用途を見出すことを理解するであろう。仮想シートを定義する際に、設計者は、フォーマット変更のすべてまたはいくつかが仮想ビューに反映されるか、またはいずれも反映されない場合に制御するためのオプション、および、オーバーライドされたセルが仮想でなくなるように、どの方向変更が直接データ値または式で反映されるか、またはオーバーライドされることが許可されるかを制御するためのオプションを指定し得る。
【0185】
いくつかの態様によれば、設計者定義および/またはオートゲンシートは、スプレッドシート内の他のセルに仮想ビューを提供するセルを有する仮想シートであり得る。仮想シートのコンテンツは、別のシートおよび/または同じシートのセルコンテンツと同一であるように、自動的に同期されている。仮想シートは、1つまたは複数の他の行レコードシート、外部データベースソース、および/またはシートレコードのインスタンス、および/または直接データ値および式を有する列などの他のデータソースへの間接的なビューを含み得るか、またはそれらから成り得る。いくつかの態様によれば、仮想シートは、データの完全に冗長なコピーとして他のデータソースとは独立して永続的かつ/または一時的に格納されてもよいか、ビューの定義として任意の直接的なデータと共に格納されてもよいか、参照の便宜のために、一切格納されることなく設計者に示されてもよいか、または設計者がそれらを見ることを指示するまで設計者から完全に非表示してもよい。仮想シートは、複数のデータソースにわたって重複される列を除外し、かつ/または非表示し得る。仮想シート内のソースデータの任意の冗長コピーは、静的であり得るか、定期的に更新され得るか、または他のデータソースが変更されたことが検出される際に、領域の当業者に明らかであろう任意の数の共通の検出方法を使用してリアルタイムで自動的に更新され得る。
【0186】
オートゲンおよび/または仮想シートは、シートまたは他のシートの残りを参照するデータまたは式を有する新しい列を追加すること、列を削除すること、フォーマットを変更すること、新しいレコードを追加すること、および/または特定のレコード値をオーバーライドすることを含む、設計者によるいくつかの修正を許可し、かつ/または禁止し得る。それらは、設計者が上に構築するための基礎として使用されてもよく、すなわち、セルは、個々に、領域として、または集計によって、他のシート、式、またはページ定義によって参照されてもよい。
【0187】
オートゲンおよび/または仮想シートが、シートレコードのインスタンスをそれらのソースデータとして有するとき、webifierは、新しいシートに含まれるべきシートレコードからのセルまたは領域のリストを設計者から取得し得る。加えて、かつ/または代替的に、webifierはまた、入力セルを示すものとして典型的にスプレッドシートツールによって示唆される、オレンジ(または他の色)の背景を有するものなどの指定された色のすべてのセルを配置するためにシートレコードを分析し、次いで、新しいシートに含めるためにそれらのセルを自動的に選択し得る。webifierは、設計者が任意の数のスプレッドシートファイルを選択し、かつ/またはアップロードするか、または1つまたは複数のファイルから任意の数の特定のシートを選択することができ、すべてのインポートされたシートが新しいシート上に表される選択されたセルを有するインポート機能を可能にし得る。仮想ビューがなければ、例えば、シートレコードの多くのインスタンスのすべてのB10セルを集約する典型的な代替案は、“=InstanceA!B10+InstanceB!B10+InstanceC!B10+InstanceD!B10..”が変更された場合、頻繁に番号が古くなる危険性がある。仮想シートまたは仮想列は、付加的な仮想セルを自動的に追加するか、または更新するために、データソースのインスタンスの存在を分析するか、または監視し得る。
【0188】
Webifierは、仮想行レコードシートに変換されるセルを超えたコンテンツのいずれかの矛盾または違いがある場合、インポートシートをスキップするか、またはインポートシートについてユーザに警告し得る。webifierは、矛盾を分析し、1つまたは複数がインポートに影響を及ぼさないと判断してもよく、またはインポートは矛盾に対応してもよい。例えば、フォントサイズおよび行幅は、無視された矛盾であり得る。予想される2と実際の3との間で異なる空白行の数は、webifierが付加的な行を削除またはスキップすることをもたらし、その結果、重要なことが進むことができるが、予想される1と実際の0との間の矛盾は無視されない場合がある。多くの標準的なスプレッドシート拡散法は、市販されており、しばしば、別のシートに対するコンテンツの多くのセルの位置の分析を伴う。これらの標準的な方法は、以前にインポートされたシートと比較して、絶対的な位置を変更したが、依然として確実に位置し、値を抽出することができるセルコンテンツを正確に見つけるために使用され得る。このような標準的な分析の使用において、webifierは、対象となるセルの値の差を無視し、対象となるセルが常に一致しなくても配置することができるように、近傍のセルの位置に焦点を当てることができる。
【0189】
同様に、ページ定義はまた、自動的に生成され得、かつ/または仮想的であり得る。オートゲンおよび/または仮想ページは、設計者によって定義されるテンプレートを使用してもよいか、または自動的に生成されるテンプレートを使用してもよく、ページおよびテンプレートは、ソースとして手動定義、自動生成、および/または仮想シートを使用してもよい。ページ定義および/またはテンプレートの生成のためのトリガは、オートゲンシートのトリガと同様であり得るか、またはオートゲンおよび/または仮想シートの作成に起因してトリガされ得る。あるいは、設計者がレコードシートに関連付けられたページを作成するとき、webifierは、最も関連性が低いものから順序付けられた先に定義されたテンプレートのリストを提示し得る。関連性は、シートが既に異なるデータソースと共に使用されているテンプレートであるかどうか(関連性が低いことを示す)、シートが、テンプレートではなく列で最小限のフォーマットおよび一貫した種類の値を有する典型的な行レコードシートのように構成されているかどうか(関連性が低いことを示す)、かつ/またはページの選択されたレコードシートとの見込みシートのコンテンツの類似性(行レコードシートの列ヘッダおよび見込みテンプレートシートのセルの両方にそれぞれ表示される単語数など)を分析することによって決定され得る。
【0190】
ページまたはシートのための自動生成プロセスは、例えば、自動生成を実行するかどうかを設計者と確認すること、設計者から付加的な情報を要求すること、および/または設計者による結果の明示的な確認などの何らかの人による関与を伴ってもよく、または伴わなくてもよい。
【0191】
Webifierは、使用されるブラウザのブランドなどの、ユーザに固有のプロパティまたはブラウザセッションに固有のプロパティを含む、現在の訪問者ユーザ名、現在の訪問者プロパティ、役割、最後のログイン時間などの現在のユーザ情報のための読み取り専用仮想オートゲンシートを提供し得る。これにより、他のシート上の任意の式が、現在のユーザに関する情報を参照することが可能になる。同様のアプローチが、デスティネーションシステムが利用可能である他のコンテキストに適用され得る。
【0192】
Webifierは、仮想シート内の各行が変更を表し、各列が任意のシート上の任意の単一のセルを表す変更履歴を有する読み取り専用仮想オートゲンシートを提供し得、いくつかのセルは、同じ仮想シート内でそれらの履歴を利用可能にし得る。列のうちの1つは、セルのその値がいつ発生したかを表すタイムスタンプ列であり得る。
【0193】
テンプレートインジケータ
一例として、設計者は、データソースへのいかなる参照もせずに、データソースへの参照が追加されるためのインジケータを用いて、スプレッドシートツール内にインボイスの挿入テンプレート「InvTemplate」を作成し得る。設計者は、そのテンプレートを参照して、詳細タイプのページを作成し得る。webifierは、テンプレート内のすべてのインジケータを識別し得、設計者からのさらなる関与なしに、各インジケータがインジケータを有する場合、“InvTemplate_A1”等の列名を有する列を割り当てられる仮想行レコードシートVirtInvSheetを自動的に生成し得る。webifierはまた、VirtInvSheetをデータソースとして使用し、訪問者が任意の選択されたインボイスの詳細に移動するためのナビゲーションリンクの列を使用して、仮想レポートページを自動的に生成し得る。InvTemplateがインボイスアイテムを入力するためのネストされたテンプレートを有する場合、webifierは、第2の仮想行レコードシートVirtInvItemSheetを自動的に生成し得、これには、以前に示された設計者が各インボイスに対して一意であり、一次キーとして扱うことができるInvtemplate上のインジケータに結びつく列がある。webifierは、次いで、VirtInvItemSheetをデータソースとして、および同様のナビゲーションリンクを用いて仮想レポートページを生成し得る。また、この例では、各インボイスアイテムの販売頻度および挿入された毎月のインボイス数について自動的に生成されるページを有するように、webifierは、VirtInvSheetまたはVirtInvItemSheet内の列に基づいて集計式を有するテンプレートおよびページを自動的に生成することができる。次いで、設計者は、付加的なシートおよびページを構築し続けるために、自動生成および仮想シートならびにレポートのすべてまたは一部を参照または修正し得る。
【0194】
ネストされた行レコードシートの場合、ネストされたデータレコードによって参照される親データシートの一次キー列を識別する代替として、webifierは、潜在的に一次キーの一部であるために、親データシートのすべての列、実質的にすべての列、またはデータタイプまたは長さなどの基本基準を満たすすべての列に対応するネストされたシート内の自動生成および/または仮想列を有し得る。ネストされたシートを利用する親テンプレートは、親テンプレートによって表示される親レコードと一致させるために、ネストされたレコード上のすべてのそれらの列の基準を用いて、ネストされたレコードを自動的にフィルタリングし得る。別の代替として、設計者が、テンプレートからネストされたデータソースを含む二次データソースを参照し、かつフィルタリングするために、先に説明された方法で基準を提供するとき、二次データソースをフィルタリングするための基準で指定された列は、どの列がネストされたシートに追加されるべきかをwebifierに示すために使用され得る。
【0195】
定義された設計者、オートゲン、および/または仮想シートは、テーブル、列、行、または個々のデータ値などの要素に関連付けられた付加的な自動的に生成されたメタデータを有し得る。メタデータは、要素、タイムスタンプ、関連ページの識別子、または関連する他のシートの識別子の一意の識別子を含むか、またはそれらから成り得る。メタデータは、要素の作成のためのトリガまたは目的を識別するために、他の要素の修正または削除をカスケードするために、他の要素、ページ、および/またはシートが外部キーとして使用するための要素の一次キーとして、または要素と他のページおよび/またはシートとの間の関係のさらなる分析または報告のための基礎として機能するために、使用され得る。このようなメタデータは、参照の便宜のために付加的な列または行として設計者に可視化され得、かつ/またはスプレッドシート式、ページ定義、または他のスプレッドシートデータ値が使用される任意の方法によってさらに使用され得る。あるいは、メタデータは、“RESOLVER(cell reference)”スプレッドシート式によって設計者にアクセス可能であり得る。そのようなメタデータはまた、レコード間の関係におけ
る潜在的な曖昧さを検出するために、かつ/または設計者または訪問者からのさらなる情報の収集をトリガするために使用され得る。
【0196】
先の例への拡張として、VirtInvItemSheetは、一次キー列が設計者によって指定される必要がないように、VirtInvSheetの実質的にすべての列を有し得る。webifierは、インボイスの一次キーとして機能するGUIDを有する仮想列をVirtInvSheetに、かつVirtInvItemSheetに列を追加して、その一次キーに対する外部キーとして機能し得る。インボイスアイテムがInvTemplateを使用してページ上で作成されると、VirtInvItemSheetの外部キー列は、VirtInvSheet一次キーによって自動的にポピュレートされる。次いで、webifierは、関連プログラミングの当業者に典型的な方法で外部キー列および一次キー列を使用してもよいか、または、VirtInvSheetの実質的にすべての列をVirtInvItemSheetに含めることがインボイスアイテムがどのインボイスアイテムに属するかを一意に識別するのに十分ではない範囲で、それらの値のすべてについて同一である2つのインボイスが存在する場合など、インボイスアイテムがインボイスに関連付けられていることを選択的に確認してもよい。次いで、webifierは、インボイスがデータ完全性の問題またはデータ構造の理由によって一意性が欠如していることを設計者に警告し得、設計者に様々な推奨されるベストプラクティスを提案し得る。
【0197】
関係の自動検出
Webifierは、レコードシート間、およびデータソース全般または1つまたは複数のテンプレートまたはページ定義などの特定のコンテキスト内のデータソース間の関係の存在、種類、および/または具体的な内容を自動的に検出し得る。webifierは、設計者アクション、訪問者アクション、設計者または訪問者によるレコードデータ入力、レコード構造、レコードシート上のフォーマット、テンプレート構造およびフォーマット、ページ定義、グローバルホワイトリスト、静的ブラックリスト、それをサポートするスプレッドシートツールに宣言された関係、またはMicrosoft PowerPivotなどのスプレッドシートツールプラグインを含む関係の自動検出を支援するために、利用可能な情報(「手がかり」と称され得る)の任意の組み合わせを使用するか、または分析し得る。分析の結論の信頼性を高めるために、様々な静的もしくは動的計量アルゴリズムまたはポイントシステムを使用して、複数の手がかりを一緒に分析し得る。信頼性レベルは、利用可能な手がかりの数および各手がかりの結論の一貫性を含む、手がかりのいくつかの特徴によって測定され得る。例えば、手がかりを組み合わせて、特定の関係を示唆する手がかりの数から、異なる関係を示唆する手がかりの数および/またはその特定の関係の欠如を引いた数をカウントすることによって、信頼性レベルを得ることができる。信頼性レベルは、webifierによって無言で関係を受け入れるべきか、設計者は信頼性レベルによって命令される1つまたは複数の推奨事項のうちの推奨事項として結論を明示的に確認するべきか、または、分析は結論を得るのに不十分であるとして無視されるべきであるかを判断するために使用され得る。
【0198】
手がかりは、“VLOOKUP( )”または“COUNTIFS( )”などのスプレッドシート関数に提供されるパラメータを含んでもよい。例えば、“=VLOOKUP(DetailSheet!C5、ParentSheet!B:F、3、false)”の式を含むテンプレートまたは行レコードシートは、詳細シート上のC列が親シート上の一次キー列Bに対する外部キーであることを示すことができる。手がかりは、テキストまたは番号フォーマットなどのスプレッドシートセルのフォーマットを含み得る。例えば、ドル記号としてフォーマットされている値は、典型的には、ドル記号を含む列が外部キーでも一次キーでもないことを示唆し、それらのドル値列を集計などの方法で使用するいずれの列もないことを間接的に示唆するであろう。手がかりは、レコードシート上にゼロ
レコードの場合であっても、列名を含んでよい。例えば、「uid」または「インボイス番号」という名前の列は、「コメント」のブラックリスト列名よりもキーである可能性が高い。手がかりは、列と共に含まれるデータの一意性を含み得る。例えば、列が常に同じ値を有する場合、それは依然として外部キーであってもよいが、一次キーではなく、複合一次キーの一部である可能性が低い。手がかりは、列内のデータの長さを含み得る。例えば、いくつかの値に対して空白を有する列と同様に、すべての値が一意であっても、多数の単語を通常有するメモ列がキーとなる可能性は低い。手がかりは、列内のデータの一貫性を含み得る。例えば、1つの列が数値および時には単語の両方を有する場合、データ種類および長さが一貫した列と比較して、キー列である可能性は低い。手がかりは、ネストされたテンプレートを有するか、またはネストされたシートを参照するテンプレートの定義を含み得る。例えば、インボイスがインボイスアイテムのリストを有し、設計者が現在表示されているレコードのInvoiceIDに一致するネストされた列“BelongsToInvoice”によって示されるインボイスアイテムをフィルタリングすることを示す場合、BelongsToInvoiceはおそらく外部キーであり、InvoiceIDはおそらく一次キーであり、一方が他方と比較してネストされた方法で使用される事実によって、インボイスとインボイスアイテムとの間に関係がある確率が増加する。手がかりは、仮想一次キーおよびいくつかの非自動生成列を分析して、仮想一次キーと最も密接に相関する列を識別することを含み得る。手がかりは、特定の列を指定する訪問者検索の発生をカウントすること、または特定の列内の値に一致する値を指定することを含み得る。例えば、リストレポートページにおいて、訪問者が頻繁に「Inv0511」等のテキストを検索する場合、Inv0511等の値を含む列は、一次キー列である可能性が高い。手がかりは、データがどれだけシーケンシャルであるかを含み得る。例えば、ギャップのない値1~100を有する列は、両方のシートが同じテンプレートによって使用される異なるシート上の同様の列の存在とともに、両方のシートが関係を有し、両方の列が関係を有することを示唆する。手がかりは、第2のシート上の列に対する1つのシート上の列の値の分布を含み得る。例えば、シートF列Aが常にシートS列Aの値を有する1:1の分布を有する場合、第2のシートSは、シートF上のレコードに必要な詳細レコードである可能性が非常に高い。1:0-1の分布を有する場合、シートFのレコードのオプションの詳細レコードである。他のすべての列と共に1:0の分布を有する場合、シートFおよびシートSは、それらの間の関係を有さない可能性がある。手がかりは、列の位置決めを含み得る。例えば、レコードシート内の第1の列は、ミドル列と比較して一次キーである可能性が高く、または互いにすぐに隣接する列は、遠く離れた列よりも複合一次キーを形成する可能性が高い。
【0199】
関係のさらなる利用
スプレッドシートツールの多くの従来の数式関数を用いて、二次データソースからの情報を参照することができる。webifierは、自動検出関係などの識別された関係を使用して、二次データソースからデータにアクセスする機能および方法をさらに簡素化し得る。先ほどの例の拡張として“=VLOOKUP(DetailSheet!C5,ParentSheet!B:F,3,false)”は、詳細シートと親シートとの関係が既に定義されている場合、どのような手段を介しても、webifierは詳細シート内から呼び出される場合、詳細シートと親シートの関係は、詳細シートのC列の外部キーと親シートのB列の一次キーとの関係同様に既に知られているため、詳細シート上のZ5などのセルが、“=WEBIFIERVLOOKUP(ParentSheet!D)”の簡略化された関数を使用することを可能にする。関数名は、この例と異なる場合もあれば、同じVLOOKUP( )関数名を共有するが代替パラメータと共有するオーバーロードである場合もある。
【0200】
別の例は、SUMIFSの代替バージョンであり、特に複合一次キーにより適しているであろう。この例では、詳細シート上の列Fの集計を、C5:D5での複合一次キーが、
DetailSheet!A:Bでの複合外部キーと一致する行レコードに制限する、“=SUMIFS(DetailSheet!F:F,DetailSheet!A:A,CONCAT(‘=’,C5),DetailSheet!B:B、CONCAT(‘=’,D5))”に類似した従来の使用は、同じ結果を達成する、代替バージョンの“=SUMIFSWEBIFIER(DetailSheet!F:F)”と置き換えられてもよい。
【0201】
同様に、従来の関数にデータを渡す前にパラメータをフィルタリングすることを示す関数が追加され得る。例えば、SUMIFSWEBIFIERではなく、webifierは、同等物として“=SUM(FILTER(DetailSheet!F:F)”を評価してもよい。キーに基づきながらも付加的な基準に基づいてフィルタリングするには、フィルタ関数は、“SUM(FILTER(DetailSheet!F:F,DetailSheet!C:C,‘>100’)”が依然として複合キーによってフィルタリングされるがまた、100を超える値を有する列Cによってフィルタリングされるように、付加的なパラメータを受け入れ得る。付加的なパラメータのフォーマットは、SUMIFS( )などで従来見られる構文と一致し得る、SQLスタイルのクエリ文字列であり得る、他の一般的に利用可能なソフトウェアで使用される代替構文であり得るか、または“=SUM(FILTER(@F,@C>100)”などのwebifierに固有の構文であり得る。あるいは、webifier全体にわたってと同様に、範囲はまた、“TableName[ColumnName]”などの従来の構造化参照によって指定され得る。次いで、webifierは、式分解エンジンの一部として構文を処理してもよく、スプレッドシートツールに格納する前に構文を従来の構文に変換し得、スプレッドシートツールの予想される構文と部分的に互換性を持たせるために引用マークを必要とし得るか、または設計者がデスティネーションシステム内の処理と比較してプレビューするためにスプレッドシートツール内の処理のために拡散技術を使用し得る。
【0202】
挿入または編集ページなどの訪問者入力を伴うページタイプの場合、前述の方法のいずれかによって定義される関係を使用して、二次データソースに挿入されたレコードのための外部キー列の自動ポピュレーションと共に、二次データソース上のレコードのフロースルー挿入または編集を可能にすることができる。関係を利用して二次データソースの特定のレコードを参照するが、入力制御としてページ上に提示されるように指定された式を含む入力ページのテンプレート上の任意のインジケータは、二次データソース上の参照されたレコードシートセルが編集されるか、または新しいレコードが二次データソースに挿入される結果をもたらす可能性がある。例えば、InvSheetの各レコードがInvSheetExtendedに対応するレコードを有するレコードシートInvSheetとレコードシートInvSheetExtendedとの間の関係の場合、InvSheetとInvSheetExtendedの両方を参照する挿入ページのテンプレートがデスティネーションシステムに提出されると、webifierはInvSheetに1つのレコードを挿入し、InvSheetExtendedに1つのレコードを挿入し、それらの関係を定義するキーに関連する列が自動的に入力される。同様に、挿入ページのテンプレートが、InvSheet列およびInvSheetExtended列の両方から構成される仮想シートInvSheetCombinedを参照した場合、webifierは、1つのレコードがInvSheetに挿入され、1つのレコードがInvSheetExtendedに挿入されるように仮想参照を分解する。フロースルー編集および一次データソースが二次データソース上で参照すべきレコードへの編集の両方が可能である場合、webifierは、式関数パラメータ、ページオプション、および/または設計者への情報の要求をポップアップすることによって設計者から追加情報を取得し得る。たとえば、編集レコードページに使用されるInvItemTemplate詳細テンプレートで、セルに式“=WEBIFIERVLOOKUP(Invoices[InvName])”とwebifierで宣言された適切な関係、または関数へのパラメー
タに明示的に説明された関係を有する従来のVLOOKUPがある場合、その式でテンプレートのセルを編集する訪問者は、インボイスアイテムが属する親インボイスを変更するか、またはインボイス名をフロースルー編集するつもりであるかのいずれかを意図し得る。次いで、webifierは、テンプレートセルの対応する入力制御が編集されるときにどの変更が生じるかを決定するように設計者が設定し得るページ上に「フロースルー編集を可能にする」オプションを有し得る。編集により、一次データソースが二次データソース上でどのレコードを参照するかが変更される場合、webifierは、入力の便宜上、かつ/または、制御が受け入れる値を関係を考慮して有効な値に制限するために、デスティネーション入力ページに表示される入力制御の種類を変更し得る。前の例を続けて、インボイス名を入力するのに適したテキスト制御の代わりに、レンダリングされた制御は、インボイス名を選択すると、インボイスアイテムの親をその名前に関連付けられたインボイスに変更する、すべてのインボイス名のリストを有するドロップダウンであり得る。
【0203】
デスティネーションシステムにスプレッドシート定義を入れる
図2のステップ207に戻ると、スプレッドシートが適用可能なデータで要望に応じて構成されると、設計者が、1つまたは複数の例示的な実施形態に関連して本明細書で説明したwebifierソフトウェアを用いてデスティネーションシステムを構築するべくプロセスを開始することがさらに含まれ得る。ユーザは、デスティネーションシステムにログインし(
図13)、スプレッドシートを受け入れる管理ウェブページを訪問し得る。例えば、webifierソフトウェアは、xlsxスプレッドシートファイル(
図68)、例えば、データ129(
図1)のアップロードを受け入れる入力フォームを有し得る。代替的に、webifierは、クラウドおよびウェブベースのスプレッドシートツールからweb-service APIを介して、APIがそれを可能にするならシートのグループを一度にまたはさらにはAPIがそれを必要とするならセルごとに、スプレッドシート定義をフェッチするべく統合を有し得る。簡略のため、すべてのこれらの方法は、本明細書で「アップロードする」、すなわち、スプレッドシート定義またはデータファイルをwebifierデータストア、例えば、データベース131へアップロードする(
図1)として言及される。特に、レコードをアップロードするためのおよびインターフェーステンプレートをアップロードするための別個のステップは必要とされず、それらは1つのスプレッドシート定義から設計者から1つのステップで行うことができ、またはそれらは別々の時点で行われ得る。
【0204】
Webifierは、スプレッドシート定義を一時的に格納し、これを代替のより効率的なフォーマット、若しくはスプレッドシートを考慮するまたはもはや考慮しない中間フォーマットと置き換え得る。実装の効率と簡素さのバランスを達成する一例は、シートをデータベースエントリに変換することであり、その場合、シート内の各セルは、セルの場所および内容を表す4つのフィールド:シート、列、行、内容、を有するデータベーステーブルにおける1つのデータベースレコードである。内容は、スプレッドシート定義のオリジナルのスキーマと一致し得るが、セルは、データベースにおいて効率よくルックアップされ得る。システムはまた、これを、受信したフォーマットで持続的に格納してよく、その場合、デスティネーションシステムのページ上の訪問者入力は、本明細書で説明されるようにスプレッドシート定義を直接修正することにより持続される。
【0205】
ウェブページの作成
ステップ209(
図2)に関連して前述したように、結果として生じるソフトウェアは、例示的な実装に関連して本明細書で説明した1つまたは複数のウェブページを備えるウェブアプリケーションを含み得る。設計者は、webifierソフトウェアのadminインターフェースにおいて“add page”特徴を選択し(
図18、
図69、および
図55)、様々なページタイプ(
図51)および構成オプション(
図52)から選択し
得る。スプレッドシート定義内のセルデータまたはメタデータは、新しいページを作成する、どんなタイプのページが設計者により意図されたか、およびそれらの種々の構成オプションの、インジケータまたは命令を含むことが可能であるが、この情報がなければ設計者は催促され得る。多様なページタイプをデスティネーションサーバ上で作成することが可能である。典型的に、すべての生成されたデスティネーションページのメニューは、web appの全体を通した便利なナビゲーションを可能にするべく、すべてのデスティネーションページ上にメニューとして表示され(
図66の“Timesheet”web
appメニューは、該特定の例に関するすべての3つのデスティネーションページをリストする)、デスティネーションページは、“apps”によりグループ化されてよく、それらは典型的に、それらがどんなスプレッドシート定義またはファイルから生じたかに基づいてグループ化される、および/またはそれらを作成した設計者によりグループ化される(ログイン設計者、またはログイン設計者とスプレッドシート定義を共有した他の設計者または他のグループから)(
図16)。デスティネーションシステムのメニュー内のデスティネーションページの順序は、設計者がAdd-On内からそれらの順序を変更するべくページをドラッグおよびドロップすることにより修正することができる。
【0206】
ページ(Reportページ)の追加+閲覧可能なソース範囲
webifierソフトウェアが作成し得るウェブページの1つの例示的なタイプは、“report”ページタイプである。レポートのタイトルは、ユーザにより指定され得る、またはスプレッドシートのデータまたはタイトルから生成され得る(
図52)。ソースも指定され得る。ソースは、スプレッドシート定義内のシート名(
図33に示すCSV_Importページタイプに関するソース制御と同様に)、“=B9:C12”などの典型的なスプレッドシートセル範囲参照(
図36)、スプレッドシート内で定義されるチャートの名前(
図52)、または“TotalColumn”または“PrintableArea”または“Employee List:Employee”などの名前により指すことができるセル範囲であるスプレッドシート“named range”(往々にして“defined name”として知られている)(
図36)とすることができる。一般に、範囲は、連続するブロックである必要はなく、それらは、いくつかのブロックおよびセルを備え得る。例えば、“A1:A8,A10,A30:B30”。多くのページが同じソースセルを参照してよく、ソースセルは、別のページのソースと部分的に重複してよく、またはページは、組み合わされることになる一連のソースを有してよい。これは、設計者がスプレッドシートツールにおいて設計したレポートに基づいてデスティネーションシステムがHTMLウェブレポートまたはモバイル画面を訪問者に示すのに十分な構成であり得る。例えば、ClientListシートは、このとき訪問者がアクセス可能となっているリストにおける行レコードのすべてで指定することもできる。“Show Page Title”などの多数の随意的な構成が指定され得る(
図28)。ページを閲覧するのにログインが要求されるかどうか(
図24)、どんなログインユーザまたはユーザのグループまたはロールが、どんなデバイス、ネットワークから、またはどんな時間帯にページの閲覧を許されるかを制御するべく、appまたはページ上でパーミッションルールも指定され得る。
図25は、どんなログインユーザがページの閲覧を許されるかを示す簡易化された例を示す。最終結果は、ユーザがウェブデザインの知識を有することを必要とせずに、データのレイアウトおよび書式設定(
図97)を含むデータを供給するオリジナルのテンプレートスプレッドシートと似ているように見えるレポートを表示するウェブページである。
【0207】
デスティネーションページのソースデータは、セル範囲ではなく、セルの上に浮いているように配置されるチャートなどの、スプレッドシート定義内の特異的な要素にリンクすることもできる。
【0208】
いくつかのページタイプは、デスティネーションページにいくつかの構成済み制御を自
動的に追加するオプションを有し得る。例えば、“allow search”(
図48)または“allow PDF export”(図示せず)オプションが、calendarページタイプなどのいくつかのページタイプ上で利用可能であり、これは結果的に、意図されたカレンダーだけでなく、サーチ結果をスクロールおよびフォーカスするなどの方法によりユーザの注目を特定のデータに引き寄せるべくサーチテキストボックスおよびサーチサブミットボタンなどの複数の制御も有するデスティネーションページを生じることができる。サーチ結果の処理は、クライアント側またはサーバ側で行われ得る。
【0209】
INSERTページの追加+デフォルトのフォーム生成
webifierが作成することができる別のタイプのページは、例えば、例示的な実施形態に係る、上記の(
図43)、ステップ211(
図2)中に用いられ得る、“insert”ページタイプである。同様に、ClientListのソースが指定され、訪問者により行または列が挿入可能であることを設計者が意図するかどうかのインジケータであり得る。ヘッダの行を表すセルの範囲は、自動的に識別または検出され、オーバーライドのためにユーザに提示され得る(
図39)。検出は、例えば、セルの場所(第1のアイテムがヘッダであることの検出を実証する
図40)、その下にリストされた行と比較したフォントの太さまたは下線などの書式設定の差異、または簡単にシートの第1の行を取り上げることに基づくことができる。デスティネーションシステムは、訪問者により挿入が完了した後で訪問者に自動的にリダイレクトするためのオプションとして他のページのリストを提供することができる(
図44)。デスティネーションシステムは、次いで、それらのそれぞれの入力制御の傍のヘッダ行に列に基づくラベルを有する、自動的に生成される入力フォームを訪問者に示し、訪問者がデータを挿入することを可能にし得る(
図91)。スプレッドシートのClientListからのセル書式設定は、自動的に生成される入力フォーム上のセルのラベルのhtml書式設定および入力制御に影響を及ぼし得る。各入力フィールドに関するラベルは、“Header Source”により決定されてよく、典型的に、ソース範囲の第1の行、Defined Name、またはユーザにより選択された範囲のいずれかである。
【0210】
スプレッドシート定義で制約を指定することに加えて、Add-Onまたはデスティネーションシステム管理ページからの各フィールドの“More Settings”タブ上の“Limitation user input”オプションで、フォーム上の入力のタイプを設計者によってさらに手動で指定するか、または制約することができる(
図78)。例えば、“User of Page”制約および“Current Date”制約(
図44)は、既に記入されたログインユーザの名前または現在の日付を有する編集不可フィールドを提示してよく(
図91)、いくつかの列は、以前のレコードからコピーされ、同じく編集不可の式を有してよく、“Whole Number”および“Decimal”は、選択されたタイプの数字のみを可能にする数値入力を提示してよく、“List”は、指定の範囲からの値を含むドロップダウン入力を提示してよく、“Date”は、日付を選択するためのカレンダーを提示し(
図92)、“Time”は、24時間の時間ピッカーを提示し、“None”および“Text Length”は、テキストフィールドを提示してよい。
【0211】
INSERTページの追加+カスタムのUI(テンプレートソース)
Insertページがより高い複雑さまたはカスタムの要件を有する場合、設計者はまた、例示的な実施形態によれば、スプレッドシート内の第1のClientListソースに加えて、スプレッドシート内の“Template Source”を指定することもできる(
図35)。これは依然としてクライアントのリストへの挿入を行うことになるが、入力フォームユーザインターフェースは、Template Sourcesにより定義され得る。Template IndicatorがそのTemplate Sources上のどこで見つかっても、セルの表示は、自動的に生成される入力制御に置き換
えられてよく、入力制御の書式設定は、Template Indicatorセルの書式設定からとられる。
【0212】
DETAILSページの追加+LIST-TO-DETAILSナビゲーション
別のページタイプは、例示的な実施形態によれば、指定のレコードソースおよびTemplate Sourcesに基づく“details”ページである。デスティネーションシステムは、テンプレートがどのレコードに対して適用されるべきかを訪問者が選択することを可能にする、テンプレート化されたレポートのレンダリングの結果の上に制御を配置し得る。代替として、Detailsページは、Reportページと組み合わせて用いられ得る。ReportページとDetailsページとの両方は、ソースとしてClientListスプレッドシートを有することになる。ClientListスプレッドシートは、“Go To Details”と呼ばれる追加された列を有してよく、各行は、“=NAVIGATETO(‘DetailsPage’,A3:Z3,Blue,LinkStyle)”などの式を有することになり、これは、クライアントのすべてをリストするメインReportページの表示中に、行3またはクリックされたそれぞれの行によりポピュレートされるDetailsPageに訪問者を連れていくことになる、ハイパーリンクスタイルナビゲーション制御が各行上で見えるべきであることをデスティネーションシステムに示すことになる。別の代替として、Reportページ作成中の構成オプションは、ClientListスプレッドシート内の指定の右にそれらを有するのではなく、生成されるべきナビゲーションリンクを指定するように設計者に促し得る。Detailsページ上の評価されるレコード値のセル書式設定は、Template Indicatorセル書式設定とTemplate Indicatorセルにレコードデータをポピュレートするセルの任意の所与の行の書式設定との組み合わせであってよく、組み合わせ可能な書式設定に対して両方のセルが競合する書式設定を有する(レコード上の色の変更がテンプレート上のより大きいフォントサイズと組み合わされたなどの)場合にどちらの書式設定が優先になるかに関するデスティネーションシステムのデフォルトの挙動および設計者により選択される好みに応じて一方が他方をオーバーライドする。デスティネーションシステムはまた、ほとんどの一般的なフォーマットはテンプレートフォーマットをオーバーライドしないが、いくつかの稀な、したがって、意図的な書式設定の変更はテンプレートフォーマットをオーバーライドすることを許され得ることを保証するべくレコードを分析してよい。
【0213】
EDIT-CELLSページおよびEDIT-RECORDページの追加
訪問者がデスティネーションシステム上のデスティネーションページ内からセルを編集するために、例示的な実施形態によれば、設計者は、Edit Cellsページ(
図38)またはEdit-Recordページ(
図41)を作成することができる。ページ作成ウェブページから、タイトルを入力し、ページタイプ“Edit-Cells”または“Edit-Record”を選択することにより、それらは同様に作成され得る。Edit-Cellsページは、訪問者が個々のセルを編集することを可能にするが、訪問者が可視要素(
図88)との対話を始めるまでは、Reportページによく似たページを表示する。Edit-Recordページは、訪問者がレコード(
図89)をブラウズし、行または列を編集および/または削除することを可能にしてよく、デフォルトのフォーム生成を有するInsertページと類似していてよい(
図90)。ページソースは、ページ上に表示されるべきセルの値の範囲であってよく、デフォルトで、どんなセルを編集することができるかを指定する第2の範囲(
図42)は、すべてのセルが編集可能であるようにページソースと一致する。範囲は、ワークシート全体、定義名、および/またはカスタム範囲であり得る。デスティネーションシステムは、データを有するすべてのセルおよびデータを有するものの間のセルを表示するべくソース範囲を調べる。両方の編集ページはまた、ユーザが挿入することによりレコードセットを拡張できるようにするべく、空きスペースの付加的な行および/または列を有し得る。定義名またはカスタム範囲は、該
範囲により参照されるセルのみを含むことになる。デスティネーションシステムは、設計者により範囲が指定された後で定義名を作成することによりカスタム範囲オプションを実装し得る。Edit-Recordページタイプは、ページ上で利用可能な編集ボタンを決定し得る、RowまたはColumnの付加的な選択を有する(
図41)。
【0214】
両方のタイプの編集ページに関する付加的な設定が“More”セクションに存在する(
図39および
図42)。設計者は、第1の行/列を用いるか、若しくは、定義名またはカスタム範囲を用いて、“Header Range”を指定することができる。ヘッダ範囲が選択される場合、設計者は、これらのヘッダが訪問者により編集可能であるか否かを指定することができる。ヘッダは、ページの第1の列(
図90)、または列Edit-Recordページの場合には最上行として現れることになる。設計者は、編集可能な範囲を選択することができ、これはメインページソースの中に含まれていなければならない。この編集可能な範囲は、ユーザにより編集可能なすべてのセルであり得る。ページタイトルを示すためのオプション、ページのサーチを可能にするためのオプション、セル間のグリッドラインを表示するためのオプション、および行および列の数字/英字を表示するためのオプションも存在する。
【0215】
Edit-Recordタイプのページに関して、削除および編集を可能にするための付加的なオプションが存在し得る(
図42)。両方ともデフォルトで可能にされる。これにより、デスティネーションページ上の各レコードの傍に付加的な制御が現れることになり得る(
図89)。行/列は、“allow delete”が選択され、且つ、行/列におけるすべてのセルが編集可能な範囲内にある場合にのみ、ページから削除され得る。行/列は、“allow edit”が選択され、且つ、行/列におけるセルのうちの少なくとも1つが編集可能な範囲内にある場合にのみ、ページから編集され得る。このケースでは、いくつかの態様によれば、実際に編集可能な範囲内にあるセルのみが編集され得る。
【0216】
Edit-Cellsタイプのデスティネーションシステムページを閲覧しているときに、ユーザは、例示的な実施形態によれば、編集するために任意の編集可能なセルをクリックすることができる(編集可能なセル範囲は、ページを作成/編集するときに定義される)。テーブルセルの内容は、一時的に非表示にされ、デフォルト値としてセルの現在の内容を有する、セルの数字フォーマットに依存する入力要素と置き換えられ得る(
図88)。保存ボタンおよび閉じるボタンが同様に可視にされる。テキストセルは、テキストフィールドを表示することになり、10進法または通貨などの数字フォーマットは、テキストをタイピングするオプションと共に数字ピッカーを表示し、日付は、日付ピッカーを表示し、時間は、時間ピッカーを表示することになる。伝統的なスプレッドシートデータ検証がセルに関して設定される場合、これはまた、ドロップダウンを提示するリスト検証、および数字ピッカーを示す数字と共に、提示される入力要素に影響を及ぼし得る。ページに適用されるデスティネーションシステム検証はまた、日付、時間、またはマップ/GPSのオプションを有する。日付および時間は、それぞれ、日付ピッカーおよび時間ピッカーを表示することになる。マップ/GPSは、ユーザがそれらを生成するべくGPS座標を入力するまたはマップ上をクリックすることを可能にするであろう。これらの値の変更および保存は、スプレッドシート定義におけるセルの値/式を、スプレッドシートツールにおいて行うのと同じ方法で変更することになる。セルが、WEBIFIERINSERTFILE式関数を用いるファイル参照を含む場合、新しいファイルまたはイメージをアップロードするためのオプションがユーザに与えられることになる(
図62)。保存を選択すると、新しいデータがサーバに送信され、編集されたセルの内容を置き換えるべく文字列値が返される。保存ボタンおよび閉じるボタンは、非表示にされてよく、セルは、その値を通常通りに表示する。ファイルがアップロードされた場合、ページがリフレッシュされる。保存ボタンをクリックした後で、以下がサーバに送信され得る:ページid、新
しいセルの値、セルの行および列、データのタイプを記述するセルタイプ、およびデスティネーションシステムページが別のウェブページに埋め込まれるか否かを示すBoolean。ファイルがアップロードされる場合、ファイルキー、ファイルid、およびファイルデータが同様に送信される。サーバが編集要求を処理した後で、セルに表示されるべき新しいテキストを指定するJSONオブジェクトがクライアントに返送される。
【0217】
CALENDARページの追加
Add-OnでCalendarページが作成され得る(
図27)が、それらはまた、例示的な実施形態によれば、ウェブサイトを通じて作成することができる。Calendarページを作成するために、3つのデータ:Event Date(必須、日付によりフォーマットされるセル)、Event Time(随意的、時間によりフォーマットされるセル)、およびEvent Title(必須)が用いられ得る。ユーザは、Add
Pageボタンを選択し、次いで、ページタイプとしてCalendarを選択する。パラメータのそれぞれに関するセル範囲をどのようにして入力するかの2つのオプションが利用可能である。定義された名前およびカスタム範囲。Defined Nameは、ユーザが、付属のWorkbookから抽出されるDefined Nameオプションのリストを選ぶことを可能にする。Custom Rangeは、“Use current selection”ボタンを押すことまたはセレクタに手動で入力することのいずれかにより、ユーザが範囲を指定することを可能にする。これらのパラメータが指定された後で、ページを保存することができる。イベントの日付は、唯一必要とされるフィールドであり、タイトルなしのイベントは、デフォルトで“Event”に設定され、時間なしのイベントは、デフォルトで“All Day”に設定され得る。サーバに変更をアップロードした後で、Calendarページビューは、指定のイベントを含むCalendarウィジェットを表示する。3つの指定のパラメータソースが抽出され、Title、Date、およびTimeプロパティからなるイベントオブジェクトを構築するのに用いられる。これらのオブジェクトは、次いで、典型的にはそれらの適切な日付内のタイトルリストとして、Calendarウィジェット上に表示される。設計ページ上のサムネイルは、レンダリングされたCalendarウィジェットを反映するおよびそれと一致する。
【0218】
ネストされるCONTAINERページの追加
Containerページは、別のページの1つまたは複数のインスタンスを含むことができるページである。それらは、ページ作成中にTypeドロップダウンから‘Container’を選択することにより作成される。コンテナページを作成するのに用いることができる、少なくとも3つの異なるモードが存在し得る。UIのボタンを介して選択することができる、Easy、Advanced、およびGraphic Designer(
図29)。
【0219】
Easyモードは、サブページをグリッドレイアウトでレンダリングし得る。コンテナに含まれることになる、列の数とサブページとの2つのデータが必要とされ得る(
図29)。最終的なレイアウトでの行の数は、いくつのページがコンテナのために選択されるかに依存することになる。
【0220】
各サブページは、Easyモード作成中にドロップダウンメニューを介して選択される。ドロップダウンは、レンダリングされたページ上のどこに各サブページが現れることになるかを反映するグリッドにレイアウトされる。ページが追加される際に、さらに付加的なページを追加することができるように、ドロップダウンの新しいブランクの行が付加され得る。新しいページを作成し、これをコンテナに追加するためのオプションも存在し、これはコンテナ自体が保存されるときに保存され得る。同様に、列の数が変更される場合に、ドロップダウンは、新しい列のカウントを反映するべく追加または削除され得る。E
asyモードで作成されるコンテナにおける列の数は、或る数、例えば、3に制限される場合もある。
【0221】
Advancedモードは、Containerページの表示のさらなる制御を可能にするWISYWYG-“What You See Is What You Get”-リッチテキストエディタを用い得る(
図30)。エディタは、フォントサイズおよび色、ボールドテキスト、箇条書きリストなどのような高度な書式設定を可能にする。ユーザは、ユーザがコンテナに入れることを望むどんなテキスト型データもコンテナに入れることができる。保存されるときに、テキスト型データは、HTMLテンプレートとして保存される。
【0222】
Advancedモードを介して作成されたコンテナ内にサブページを含めることは、例示的な実施形態によれば、テキスト“{{“および”}}”で囲まれるページ名をタイピングすることにより行われ得る。例えば、文言“{{DataPage}}”をタイピングすることにより、コンテナに“DataPage”という名前のページが含まれることになる。Containerページがレンダリングされるときに、テンプレートが、“{{“マーカと”}}”マーカとの間にある文言に関してサーチされる。文言が、システムにおける有効なページ名と一致する場合、文言は、一致するページのHTMLレンダリングに置き換えられる。Advancedモードの利点は、いくつかのTextタイプのページを作成する必要なしに、いくつかのページを、テキストが織り込まれた状態でレイアウトできることである。これはまた、Containerページの最終的な外観のさらなる制御を可能にする。
【0223】
Graphic Designerモードは、Advancedモードと類似しているが、フルHTMLテキストエディタおよびプレビュー機能が含まれ得る(
図31)。Graphic Designerのエディタは、エディタの最上部に存在するタブを用いることにより、“Edit HTML”ビュー、“Preview”ビュー、および“Editor”ビューの間で切り替えることができる。
【0224】
“Editor”タブは、Advancedモードエディタと同じエディタを含む。HTMLエディタは、“Edit HTML”タブの下に存在する。HTMLエディタを用いて、ユーザは、Containerページの最終的な外観のより一層の制御を可能にする任意のマークアップを入力することができる。“Preview”タブ機能は、現在のマークアップを取り上げ、これをレンダリングし、ゆえにユーザは、普通にページを保存および閲覧する必要なしに、レンダリングされたテンプレートの外観をすぐに見ることができる。
【0225】
AdvancedとGraphic Designerは、両方とも現在のページのリストが右側にあることを特徴とする。このリストからページがクリックされるときに、ページは、現在のカーソル位置でテンプレートに自動的に挿入され得る。
【0226】
AdvancedモードおよびGraphic Designerモードはまた、“Import From Easy Mode”へのボタンを有し得る。この機能を用いるために、最初にEasyモードを用いてデータが入力される必要があり得る。押されたときに、AdvancedおよびGraphic Designerのエディタは、コンテナがEasyモードであったときのオリジナルの外観と一致するテンプレートが事前に充填されることになるであろう。
【0227】
すべてのContainerモードに関して、1つまたは複数のルールが作成を制限し得る。1つ目は、Containerページが、1回よりも多く同じInsertタイプ
ページを含むことができないことである。2つ目は、コンテナが、該コンテナ自体を、または無限ループを生じることになる別のContainerページを含むことができないことである(コンテナループの例:ページ‘A’はページ‘B’を含むが、ページ‘B’も‘A’を含む)。これらのルールは、保存時にチェックされ、違反する場合、コンテナの作成が防止され得る。
【0228】
Webifierは、レコードリストと、挿入などの訪問者のアクションのためのユーザインターフェースとの両方が、例示的な実施形態によれば、スプレッドシートツール内の非技術系の設計者により概ね定義されることを可能にする。すべてのこれらのReportタイプは、ソースまたはTemplate Sourcesとして、レコードの集計データを表す式、集計データを表すチャート、または本質的にスプレッドシート上で可視の何でも有するスプレッドシートを有し得る(
図98)。例えば、Insertページは、次のレコードを入力する際に訪問者を助けるために、以前に挿入されたレコードについての参照情報、またはこれまでのすべてのレコードのグラフを有することもできる。データとインターフェースとの関係性は、設計者により非常に広く定義可能なままにされている。ソースデータのためのスプレッドシートを用いることとそしてまたユーザインターフェースのレイアウトおよび設計のためのスプレッドシートを用いることとの組み合わせの融通性の度合いは意外にも高く、これまでソフトウェア開発経験またはトレーニングを有していない数百万人のユーザに新しい能力を与える。
【0229】
Containerページタイプはまた、Tabs Containerタイプであり得る(
図49)。複数のサブページを同じページ上に例えば複数の列に配置するのではなく、各サブページは、デスティネーションページが訪問者にロードされるときに別個のタブとして表示されることになる(
図98)。
【0230】
式別のネストされたコンテナページ
コンテナページは、コンテナの定義、例えば、表示するサブページの列の数および表示するサブページが、コンテナテンプレートシートによって定義され得る付加的なモードを有し得る。コンテナテンプレートシートのセルは、いくつかの態様によれば、単にサブページまたは他の一意の識別子の名前であってもよく、シート内で利用される列の数は、コンテナページ上に表示されるサブページの列の数を表すであろう。これにより、設計者にかなりの柔軟性を持たせることができる。例えば、設計者は、セルA1:A3などの複数の列にわたってセルをマージし、その周囲に境界線を置き、セルコンテンツをテキスト「ヘッダページ」に設定して、ヘッダサブページが境界線を有し、データおよび他のテンプレートがどのように定義されるかと一致する身近な方法で3列にまたがることを示し得る。設計者はまた、どのサブページを訪問者に示すべきかを示すために式を使用し得る。“=IF(Item.Count(A:A)>50、‘Line Graph Page’,‘Bar Chart Page’)”などの式は、カウント内に多くのアイテムがあるときに、折れ線グラフが示されるが、アイテムが少ないときに棒グラフが示されるように、示されるサブページを変更する。“=IF(item.A1<EDATE(NOW(),-1),‘Readonly Page’,‘7Editable Page’)”などの式は、レコードを1ヶ月後まで編集することを可能にし、その後、そのページは、編集制御とは対照的に読み取り専用ビューを提示することができる。
【0231】
Webifierは、コンテナページを含む任意の種類のテンプレートのセルが、テキストとは対照的にHTMLマークアップとして訪問者ブラウザにデスティネーションシステムによって配信されるHTMLマークアップテキストを含むことを可能にし得る。設計者は、ページ構成オプションなどを通じて、マークアップとして検出され、配信されるHTMLマークアップでどのページをレンダリングすべきかを指定し得る。加えて、かつ/または代替的に、設計者は、特定のセルまたは領域がHTMLマークアップレンダリング
を許可されるべきであることをwebifierに指示することによって、どの特定のセルがレンダリングされるべきかを指定し得、webifierは、メタデータとして、かつ/またはシートとは別個にそのような嗜好を格納し得る。
【0232】
CSV IMPORTページの追加
CSV Importページ(
図86)は、例示的な実施形態によれば、訪問者がCSVファイルから一度に複数の行をスプレッドシートに挿入することを可能にする。設計者は、CSV Importページに関するソースとしてワークシート、定義名、またはカスタム範囲を選択することができる(
図33)。このソースは、ページ上のどこに新しいデータが入力されることになるかを指定する。これは、インポートされるCSVファイルにおいて可能な列の数を制約するまたはしない場合がある。例えば、$A$1:$C$1の範囲をカバーする定義名ソースは、3つの列を有するCSVファイルのみ可能にすることになり、データは、列A、B、およびCにわたる最高の利用可能な行に挿入されることになる。
【0233】
このページを用いるときに、訪問者は、挿入されるべき列の期待される数を伝えられ得る。それらはまた、CSVファイルの第1の行を除外するためのオプションを有し得る。訪問者は、次いで、標準のファイルアップロード制御を用いてCSVファイルを選択し、ページをサブミットする。ページは、アップロード制御を、.CSV拡張子のみを受け入れるように制限し得る。ページがデータを含まないまたは不適切にフォーマットされたデータを含む場合、エラーが返される(
図87)。
【0234】
各行は、Insert Recordページと同じ方法で、ソースにより指定される列に1つずつ挿入され得る。後述するデータ検証が依然として適用され、ゆえに、いずれかの値がセルに課された制約を満たさない場合、インポートが拒否され、制限され、または他の方法で修正され、訪問者に警告されることになる。挿入が成功する場合、訪問者は、挿入された行の数を表示する成功メッセージを受信し得る。
【0235】
埋め込み型スプレッドシートページの追加
タイトルおよびソース範囲で指定され得る別のページタイプは、例示的な実施形態によれば、埋め込み型スプレッドシートページである。このページタイプは、埋め込み型スプレッドシート・インターフェースを訪問者に表示し、スプレッドシートの設計者により指定された部分の値および式を設計者がするのと同じ方法で訪問者が編集することを可能にする。スプレッドシート制御の実装は、包括的である必要はなく、訪問者がスプレッドシート外のデータを参照するどのような能力を有することも必要としない。この実装は、データをスプレッドシート定義フォーマットで受け入れ、訪問者が保存すると、結果的にスプレッドシート定義フォーマットを生成する、多くの市販のスプレッドシートウェブ制御のうちの1つを利用することができ、この場合、セルの式またはセルの値は、スプレッドシート制御に提供される一時的なシートにおよびそこから1つずつ容易にコピーされ得る。
【0236】
付加的なページタイプ
Webifierは、例示的な実施形態によれば、複数の他のページタイプを同様の様態でサポートすることができる。例えば、前述の“report”ページタイプと類似しているが、デスティネーションシステムは、Reportページのhtmlを、訪問者がそのPDFページのURLにアクセスするときにブラウザまたはモバイルアプリケーションによりダウンロードされ開かれるPDFドキュメントへ変換するまたは印刷する付加的なステップを行うためにPDFライブラリへの市販のコンバータまたはプリントを用いてよい。
【0237】
ページタイプの別の例は、外部ウェブページをデスティネーションページ上のフレームに埋め込むことであり、この場合、フレームのURLが、ページを作成するときにページ構成において指定され、またはこれが静的な値によりまたは式により提供されることを可能にするスプレッドシート定義における指定のセルをデリファレンスすることにより得られる。これは、スプレッドシートレコードデータが、訪問者が差し向けられるウェブページを定義するべきであるシナリオで特に有用であり得る。
【0238】
スプレッドシート定義の抽出
スプレッドシートが定義されると、webifierは、例示的な実施形態によれば、スプレッドシート定義に基づいてデスティネーションシステムページを生成し得る。スプレッドシート定義がデスティネーションシステム上に持続的に格納される例では、プロセスは、適用可能なソース範囲内に入るセルの定義を抽出し、利用可能にすることで始まる(
図2のステップ207)。スプレッドシート定義がxlsxファイルフォーマットで始まる場合、ファイルは、XMLフォーマットの中身を取得するべく解凍され得る。初歩的な文字列パーシングから洗練されたパーシングまでの様々なXMLパーシングオプションが、通常は、XMLパーシングライブラリにおける関数を呼び出すことにより行われ、セルおよびそれらの属性を含む個々のデータセクションのすべてを通して反復するために、並びに、それらをインメモリオブジェクト指向クラスおよびインスタンスなどの代替または中間フォーマットへロードするために便利なアクセスを提供するのに用いられる。代替的に、xlsx、MS-XLSB、SpreadsheetML、ODSフォーマット、および同様のスキーマに適合する市販のスプレッドシートファイルフォーマットパーサが、スプレッドシートのデータを、スプレッドシートデータにおいて典型的に見受けられる属性およびフォーマットに便利に特化されたオブジェクト指向クラスで明らかにするのに用いられ得る。
【0239】
スプレッドシート定義が持続的に格納されず、代わりに、中間またはデータベースフォーマットで持続された例では、上記のステップのうちのいくつかは依然として適用されるが、それらは、デスティネーションシステムページに関する要求がシステムにより受信される際にオンデマンドで行われるのではなく、設計者がスプレッドシート定義を提供した直後に、より早い段階で、システム上のすべてのシートに関して行われ得る。中間フォーマットは、これらのステップに部分的により早い段階で従うことおよび部分的に要求ごとに従うことを含み得る。例えば、早い段階は、xlsxファイルを受け入れ、これを解凍し、必要なファイルを、まだそれをさらに解析しない、シート全体を表すデータベースレコードへ変換し得る。その場合、デスティネーションシステムへの各ページ要求中のステップはより少ない。
【0240】
書式設定および属性の変換
ステップ207および/または209(
図2)中に、データは、中間フォーマットに変換されてよく、これは、例示的な実施形態によれば、関連するデータ属性を、スプレッドシートクラスではなくCSSまたはHTMLクラスにより近く似ているクラスでより便利にアクセス可能にし得る。例えば、クラス上のプロパティ名は、CSSのプロパティ名と一致してよく、または“ObtainCSSDefinition()”などのクラスに対するいくつかの方法が存在し得る。しかしながら、中間フォーマットの便利さは必要とされず、代替的に、webifierは、CSSおよびHTMLのデスティネーションページの出力フォーマットに従ってデータを格納してよい、または、データをオリジナルのスプレッドシートフォーマットで格納し、後でストリームを中間ストレージなしに出力フォームへまっすぐに向けてよい。例えば、列の幅を処理するために、XMLスニペット“<col min=“1” max=“2” width=“11.8”>”の“width”属性の値を読み出し、CSSによりサポートされるユニットに変換し、結果的に生じる列クラスの“csswidth”プロパティを格納する、またはこれをCSS出力ス
トリーミング機能の一部として“width:100px;”としてストリーム出力することもできる。
【0241】
伝統的なスプレッドシートに一般的な、スプレッドシート定義内で見受けられる条件付き書式設定エントリは、設計者が指定した式がセルの書式設定の定義と関連付けられるかについてデスティネーションシステムに式評価を行わせ得る。デスティネーションシステムがデスティネーションシステムに関する訪問者要求に応答するときに式をtrueに評価する場合、条件付き書式設定エントリ内に含まれる書式設定は、デスティネーションページが異なる書式設定をもつ要素を有することになるように、同様にcssに変換されることになる。
【0242】
ページタイプによる出力の変化
訪問者に送信されることになるCSSテキスト定義に関するストリームへのオブジェクトのプロパティのシリアライズの一部として、デスティネーションシステムは、例示的な実施形態によれば、どんな種類のページタイプおよびどんなタイプの訪問者デバイス特徴が所与のターゲットページに適用可能であるかなどのファクタを考慮に入れ得る。例えば、ページが“report”タイプのものである場合、webifierは、“<td>Cell Text</td>”のようなHTML TDセルとしてのボーダーを有するセルおよび“td{border:1px solid black; }”などのいくつかの関連するCSSを出力し得る。しかしながら、ページが“edit details”タイプのものであり、且つ、セルが編集することができるセルとして指定される範囲内に入る場合、webifierは、代わりに、所望の入力制御のスタイルに応じて“<td><input type=text value=”Cell Text”/></td>”として同じセルおよび異なるCSSを出力し得る。
【0243】
他のタイプの出力は、より一層特化され得る。例えば、Calendarのページタイプは、セルをレンダリングすることを試みる代わりに、クライアント側で訪問者が指定するように数か月間ブラウズすることまたはウィークリーまたはアジェンダビューに切り替えることのような特徴と対話式に表示されるように、カレンダー制御(
図27のサムネイル内)などの第三者ウィジェットにより受け入れ可能な文字列フォーマットにレンダリングし得る。デスティネーションシステムはまた、名前列およびGPS座標列を有するシートを、指定の場所を有するマップをレンダリングするべく第三者サーバと対話する第三者マッピングアプリケーションウィジェットにより受け入れられるカンマ区切りのリストに文字列レンダリングし得る。
【0244】
データ検証
往々にして、スプレッドシートツールは、データ検証能力を含む。例えば、データ検証ルールは、スプレッドシートツールで指定することができ、その場合、セルは、特に、整数のみ可能にする、10進数のみ可能にする、指定の最小範囲および最大範囲内の数のみ可能にする、おそらく最小範囲および最大範囲内の日付または時間のみ可能にする、可能な文字の最大数を制限する、または必要な文字の最小数を制限するべきである。データ検証はまた、セルが、リストで指定される値のうちの1つを含むことのみ可能にするように設定することができる。リストは、値のシンプルテキストリストとしてデータ検証定義中に提供することができ、または、スプレッドシート上のセルの範囲への参照を指定することができ、その場合、ツールは、そこから容認できる値のリストを得ることになり、該セルに関するスプレッドシートツール内にドロップダウン制御を生じさせることができる。データ検証はまた、結果的にtrueを返す典型的なスプレッドシート式を生じることになる値のみを可能にするように設定することができる。例えば、セルB1に関して、式は、“=OR(B1>=0,AND(A1=0,A2<40))”を指定することもでき、この場合、B1は、正の数とすることができ、またはセルA1がゼロであり、且つA2が
小さい数である場合に、負とすることができる。いくつかのツールは、ブランク値が検証をパスすることを可能にするべく例外を指定することを可能にする。例示的な実施形態によれば、デスティネーションシステムは、スプレッドシートおよびスプレッドシートセル定義から設計者が指定した上記のデータ検証タイプおよびオプションのすべてを読み出すことができる。データ検証は、セル定義XML上とすることもでき、またはデータ検証ルールは、ルールが適用されるセルのリストと共に、スプレッドシート定義におけるグループとしてどこか別の場所で定義することもできる。デスティネーションシステムは、スプレッドシート定義から該情報を抽出および処理してよい。スプレッドシート内で適用されたデータ検証ルールを有するセルに対応するデスティネーションシステムからの値の挿入または編集などの入力中に、デスティネーションシステムは、訪問者の入力値をこれらの検証ルールと比較して評価することになる。評価は、サーバ上で行うこともでき、または例えば要求がサーバへ送信される必要なしにユーザの入力を評価することになるクライアント側JavaScriptにルールを渡すことにより行うこともできる。データ検証に失敗する場合、訪問者に値を訂正する機会を与えるべくラベルまたはポップアップ警告が示されてよい。データ検証ルールが、そこから容認できる値のリストを得るためのセル参照に関係していた場合、またはデータ検証ルールが、true評価を必要とする式に関係していた場合、システムは、式を評価するのに必要とされるまたはシステムが容認できる値のリストを知るのに必要とされる他のセルの値をデリファレンスしてよく、これは次に、訪問ユーザの入力を可能または不可能にすることになる。スプレッドシート定義が、日付に基づくルールを指定する場合、デスティネーションシステムは、ユーザがそこから日付を選ぶべくポップアップのカレンダー制御を有するように、挿入または編集フォーム上に出力される制御を修正してよく、随意的に、無効な値が警告付きでタイプされるがサーバへサブミットされないようにするのではなく、無効な値が最初から指定されるのを防ぐために、テキストボックス制御自体にタイピングすることは不可能にされる。
【0245】
“A1=0”などのスプレッドシートスタイルの検証を超えて進むために、デスティネーションシステムは、サーバから取得される情報でセルの値を自動的に設定する、“Current User”または“Current Date”などの検証を設計者が追加することができる、ページ作成中の付加的なオプションを有する。マップまたはGPS座標制約を指定することも可能であり、ユーザは、GPS座標を入力するかまたは座標を生成するべくマップ上のどこかを選択することもでき、それらはまた、値に関する正しいGPS書式設定となるように検証されることになる。外接矩形をもたらすデスティネーションシステムに指定される最小領域および最大領域を有することにより、境界として指定されるポリゴン、または“Europe”のような事前定義されたポリゴンを有することにより、GPS座標のより深い検証も可能である。他の便利なデータバリデータも、それらが伝統的なスプレッドシートツールバリデータと同じ効果を有する場合であっても利用可能である。例えば、設計者が有効な値のリストを指定することを可能にするバリデータ(
図80)が利用可能であり、結果的にInsertページ上でレンダリングされるドロップダウン制御を生じる。第2の例は、どんな日付が選択されるかを制限することができる日付バリデータである(
図79)。
【0246】
デスティネーションシステムは、入力フォーム(
図93)、CSV Importページ(
図87)、または外部自動化webifier API呼び出しなどの入力方法を含む訪問者入力の方法に関係なくデータ検証ルールを実施し得る。
【0247】
一過性データ
Webifierでは、あらゆる種類のシートは、長期にわたってすべてのユーザ間で一貫性がないシートデータの同時バージョンである一過性データを含んでよい。例えば、配信されている単一のデスティネーションページに固有のデータ、訪問者ブラウザセッションごとのデータ、1日あたりなどの周期的なデータ、訪問者あたりであるがブラウザセ
ッションにわたって持続的であるデータ、役割またはユーザグループごとであるが永続的であるデータ、および/または1日あたりの訪問者あたりなどの上記の組み合わせを含む、いくつかのタイプの一過性データが存在する。デスティネーションシステムは、一過性データがブラウザセッションのグループに適用されるように、訪問者ブラウザセッションの開始または終了時に一過性データを継続して使用するか、またはリセットするように訪問者に要求し得る。すべての種類の一過性データについて、データは、デスティネーションシステム内に格納され、アクセスがログされ、視聴および修正のために設計者ユーザに利用可能であり、非一過性データと同様に利用するためにwebifierシステムの他のコンポーネントに利用可能であり得る。
【0248】
データは、アプリごと、ページごと、シートごと、列または行ごと、範囲ごと、かつ/またはセルごとを含む様々なレベルの粒度で設計者によって一過性として宣言され得る。宣言は、アプリまたはページ構成オプションなどのデスティネーションシステム管理ページ上に提示される構成オプションなどの様々な方法を、オートゲンシートのためなどに自動的に使用する設計者によって、すべての一過性範囲の編集可能なリストを有する構成シートによって、かつ/またはその一過性種類を示すためにシート、範囲、またはシートのコンポーネントを選択する設計者によって提供することができる。宣言は、デスティネーションシステムの構成オプションと共に、かつ/またはシートまたはシートコンテンツ上のメタデータとして含む、様々な方法に格納され得る。
【0249】
例えば、訪問者が自分の金融パラメータをウェブページに入力して自分の住宅ローン返済のグラフを見ることを可能にする銀行のための住宅ローン計算機アプリの設計者は、デスティネーションシステムのアプリオプションを介してアプリ全体を一過性に設定し、一過性が個々のブラウザセッションにスコープされることを示し得る。結果として得られるアプリは、すべての訪問が元のデータから始まる可能性があり、訪問者が行ったすべての変更は、他の訪問者や同じ訪問者による将来の訪問に影響を与えることはない。別の例は、基礎となるレコードシートが一過性であり、一過性がユーザごとにスコープされる「To-Do」ページであり、その結果、各ユーザは、複数のデバイスからアクセスすることができる編集セルまたはレポートページタイプ上にそれぞれの永続的なTo-Doのリストを有し、同じページに訪問する他のユーザは、ユーザ間でTo-Doを共有しない別個のリストを有する。もうひとつの例は、従業員全員でページを共有して、各従業員が今日オフィスにいるかいないかを示すアプリであり、in/out列は一過性で、日付までスコープされているため、従業員は毎朝「in」に自分自身を設定して他のすべてのユーザに到着したことを示し、前日に「out」と自分自身をマークし忘れた従業員は、その値が数日の間に空白にリセットされる可能性があるため、到着前の翌日にいることを誤って示すことはない。
【0250】
別の例は、訪問者のデスティネーションページ上に付加的なナビゲーションを構築するための技術を実証し、訪問者はドロップダウンリストから国を指定することができ、その国に特有のデータが示されるであろう。設計者は、2つのサブページを持つページコンテナを作成する。一方はレポートページ、他方はレポートページのナビゲーション制御として使用されるドロップダウンを有する編集ページである。編集ページのテンプレートは、各ページ配信のスコープで一過性に設定されたスプレッドシートセルA1を有する国ドロップダウン参照を有し、レポートページのテンプレートは、セルA1を参照する条件論理を有するスプレッドシート式を有する列を有し、A1の値に依存して式の結果を変化させる。例えば、式が“=IF(A1=‘Canada’,‘north’,IF(A1=’US’,’south’,‘unknown’)”である場合、ドロップダウンを“Canada”に設定する訪問者は、レポートページが“north”を示すのを、ドロップダウンを“US”に変更すると、“south”を示すのを確認する。レポートの多くのセルは、国に関する完全なレポートを提供するためにドロップダウンの一過性の値に応じ
て変化し得るが、ページへの同時訪問者の多くは、それぞれ自分のナビゲーション国の選択に対応する値を確認し、他のユーザのナビゲーション選択または以前のブラウザセッションにおける自身の選択の影響を受けないであろう。しかしながら、この例では、デスティネーションシステムは、一過性ナビゲーション選択を依然として格納し得る。
【0251】
同様に、一過性データは、セル範囲を動的に計算する式によって参照されてもよく、それは、ページのソース構成によって次いで、訪問者が現在選択しているが、編集された値自体が非一過性であるであろう国にのみ影響する値を訪問者が確認し、編集するように、どの範囲を表示し、かつ編集するかを指定するために使用されてもよい。一般に、スプレッドシートを主な方法論として使用して、一過性および非一過性のユーザインターフェースおよび/またはデータの両方を組み合わせる能力は、部分の合計よりも大きい値および柔軟性を有する。
【0252】
webifierは、いくつかの実装では、各一過性のスコープについてアプリ全体を複製する簡略化されたアプローチを介して一過性機能を提供し得る。加えて、かつ/または代替的に、より高いパフォーマンスのために、webifierは、SQLデータベースを利用して、別個のレコード内に格納された各スプレッドシートセルのコンテンツをテーブルに格納し得る。いくつかのタイプの一過性データの格納をサポートする簡略化された例示的なデータベースレコードフォーマットは、他の列の中に以下の列を含み得る:guid ID、int行、int列、guid userScope、guid SessionScope、テキストコンテンツ、テキストフォーマット、DateTime作成Timestamp、およびDateTime lastModiFiedTimstamp。そのようなデータベースレコードフォーマットは、任意の所与のセルの複数の同時バージョンをサポートし得る。任意のセルの一次非一過性バージョンを取得するために、SQLクエリは、例えば、条項のどこに“userScope is null and SessionScope is null”を含み得る。一過性オプションのいくつかのレイヤーが有効である場合、SQLクエリは、SessionScopeセットを有する任意のレコードを戻す単一のネストされたクエリで最も関連するセル値を、そうではなく見つからない場合、ユーザスコープセットを有するレコードを、そうではなく見つからない場合、一次非一過性バージョンを取得することができる。このようなSQLデータベースストレージでは、設計者が対象のセルの上の行を挿入する場合、SQL更新クエリは、挿入されたセルの下のすべてのセルの行を増分し得るが、同じ単一クエリを有するセルのすべての一過性バージョンも増分し得る。
【0253】
Webifierは、閲覧し、レポートを作成し、集計のための式で使用し、各ユーザの一過性値の編集を可能にする編集ページを作成し、かつ/または非一過性セルが使用され得るあらゆる方法で利用するために、データの一過性バージョンを設計者にアクセス可能にし得る。webifierは、一過性を有する任意のシートを開くときに、設計者がスコープの任意のインスタンスを指定することを可能にし得る。例えば、設計者がユーザスコープごとに有するシートABCを開くことを示す場合、webifierは、非一過性バージョンを閲覧し、かつ修正するべきか、または提供されたリストからユーザを選択してユーザの一過性バージョンABCを開くべきかどうかを設計者に尋ね得る。webifierはまた、シートが各一過性バージョンについての行および各セルアドレスについての列を有する設計者にオートゲンおよび/または仮想シートを提供する方法を使用することによって設計者へのアクセスを可能にし得る。例えば、一過性スコープがユーザごとである、BaseRecordSheet!A1:B2シートのセルの一過性の範囲の場合、AutoGenTransientSheet上の列ヘッダは、ラベル“user”、“cellA1”、“cellA2”、“cellB1”、“cellB2”を有する列を識別し得、続いて、非一過性値を示すためのブランクユーザを有する行を、続いて、一過性値を有する各ユーザの行を識別し得る。値、式、またはさらにはフォーマットは、
cellA1列のような列の各値ごとに変化し得る。次いで、設計者は、“Highest Label”と従来のスプレッドシート式“=MAX(AutoGenTransientSheet! B3:B1000)”は、非一過性の行を除外し、すべてのユーザがセルRecordSheet!A1に設定した最大値を表示する関連するレポートページを作成することができる。設計者は次いで、AutoGenTransientSheet全体のデータソースを有する編集セルページを作成してもよく、デスティネーションページへの訪問者が他のユーザの一過性値を修正することを可能にする。
【0254】
Webifierはまた、transientScopeが“user”などのスコープキーワードとユーザ名またはGUIDなどの識別子との連結であってもよく、アプリが単純な名前またはGUIDであってもよい、transientScope!!!app!!sheet!startcell:endcellへの範囲参照のための従来のsheet!startcell:endcell構文を拡張することによって、設計者へのアクセスを可能にし得る。例えば、セルは、式“=AVERAGE(group-employees!!!Forecast!projects!B1:B1000)”を有してもよい。デスティネーションシステムは、通常の方法で式を評価するために構文を解析し、Add-Onは、スプレッドシートツールに、プレースホルダ値を設計者に表示させ得るか、またはAdd-Onは、デスティネーションシステムにAPI呼び出しを行い、実際の値をスプレッドシートツールに提供し得る。あるいは、付加的なオーバーロードバージョンのスプレッドシート関数は、“=AVERAGEEX(transient scope text,app text,sheet!startcell:endcell)”などのパラメータを提供され得る。
【0255】
Webifierは、あるスコープから別のスコープへのシートデータの一過性バージョンのポータビリティを可能にし得る。例えば、ユーザごとの一過性のスコープを有するページの場合、webifierは、訪問者ジョンへのURLリンクを提供し得、これは、他の訪問者ジェーンと共有され得、その結果、ページへのジェーンの訪問は、自身のページではなくジョンに属する一過性ビューを示すことになる。URLリンクは、読み取り専用またはジョンにスコープされた他の一過性データを示す他のページにナビゲートすることができないなど、一過性ビューへのアクセスが制限され得る。webifierはまた、ジェーンがジョンの一過性データを採用するためのオプションを提供し、ジェーン自身の一過性のスコープ内で修正を進めることができる。webifierはまた、訪問者がいくつかの一過性のスコープのうちの1つを維持し、選択的に再開することができるように、一過性のスコープをブックマークすること、またはURLリンクを再利用することを可能にし得る。
【0256】
設計者が任意の一過性を指定しなくても、webifierは、訪問者にサンドボックスモードへの出入りのオプションと、一過性スコープの選択のオプションを提供し得る。結果は一過性を指定する設計者と同様であろう。訪問者が単一の値、値のページ、またはアプリ全体をサンドボックス化することを望むことを示す場合、デスティネーションシステムは、関連付けられたデータの一過性バージョンを作成し、訪問者がデータの非一過性バージョンに影響を与えることなくデータを編集することを可能にし得る。次いで、訪問者がサンドボックスモードを終了することを希望することを示す場合、一過性データは破棄され得、訪問者のビューは、さらなる編集が非一過性データに影響を及ぼす通常の状態に戻るか、または訪問者は、彼らのサンドボックス変更を非一過性データに適用するオプションを与えられ得、訪問者に変更のためのステージング領域を効果的に提供する。同様のサンドボックスモードはまた、変更のためのステージング領域として機能するように、webifierによって設計者に提供され得る。
【0257】
セル、領域、および/またはそれ以外への参照が、一過性も非一過性も明示的に指定し
ないとき、デスティネーションシステムは、訪問者ブラウザセッションなどの現在の要求コンテキストのスコープと一致する狭いスコープを有する一過性バージョンを自動的に使用しようとし得、任意の狭いスコープが存在しないときに、任意の適用可能な一過性バージョンが非一過性バージョンに戻ることができるまで、訪問者などの広いスコープを有する一過性バージョンを使用しようとし得る。
【0258】
並行性および式エンジン
多くの訪問者が、デスティネーションシステムにログインし、読出し専用ページを同時に要求することもできる。編集に関係する要求に関して、サーバは、例示的な実施形態によれば、入ってくる要求またはレコードを修正する要求のコアコードのすべてをキューにシリアライズしてよく、これは、今日の処理能力を考えると事実上同時であるように見えるであろう。多くの異なるページタイプに適用可能な、デスティネーションシステムは、スプレッドシート定義から生じるセル参照および式を、ユーザに表示されるまたはスプレッドシート定義におけるまたはデスティネーションシステムの他の領域内のさらに他の式に再帰的に用いられることになる、シンプルテキストおよび数値へ分解し得る。式の分解は、多くの方法で完了され得る。スプレッドシートツールと同じコア処理エンジンまたはライブラリが再利用されてよく、またはカスタムのパーシングおよび式処理エンジンがデスティネーションシステムに埋め込まれるように構築されてよい。いずれにしても、エンジンは、行および列のインデックス値に基づいてセル参照を分解する1つまたは複数のコールバックを有してよく、または、セル定義を格納するデータベースにスプレッドシート定義を渡すまたはこれにアクセスすることもできる。パスインされるスプレッドシート定義は、パスインされたオリジナルのスプレッドシート定義と同じではない、簡易化されたまたは他の方法で修正された、再生成された定義であってよく、またはオリジナルのスプレッドシート定義がパスインされてよい。編集に何らかの衝突があるケースでは、システムは、時間(例えば、最後の人が勝つ(last man wins))または任意の他の所望のヒューリスティックスに基づいて受け入れられた編集を選択または指定し得る。
【0259】
ワークフローおよびフィルタリング結果
Webifierは、例示的な実施形態によれば、ワークフローのいくつかのフォームが、Reportページタイプおよび他のページタイプのバリエーションで定義されることを可能にし得る。行レコードシート上で、行ごとの、したがって、レコードごとの訪問者パーミッションに影響を及ぼすことを意図した列を設計者が追加することもでき、その場合、特定の列のセルの式の結果により、デスティネーションサーバがその行を出力結果に含むまたは含まないことになる。例えば、列Aが従業員の名前を含み、列Bがいくつかの時間を含む従業員タイムシート・スプレッドシートと、該シートのソース領域を有するReportページタイプを想像してみる。追加の列Cは、“=IsLoggedInUser(A1)”に似たレコードを表す各行に関する式を有してよく、この場合、A1は、第2の行に関してA2に、以下同様に変化することになる。これは設計者に値を示すべく設計時間中に分解することができないが、デスティネーションシステムは、Reportページをリストするタイムシートを訪問者が訪問するときに式の列を評価することになる。反復中に、デスティネーションシステムは、その行の列Aで指定される従業員が訪問者ではなかった場合に、訪問者に関する行のレンダリングをスキップすることになる。行は、列Aにおける訪問者と一致した場合にレンダリングされ続けることになる。最終結果は、従業員が、該従業員に関係する時間レコードの行のみを示すことになるスプレッドシート定義に基づいて、タイムシートウェブページを訪問することができたことである(
図20)。同様に、シートがスーパーバイザを指定する列を有していた場合、スーパーバイザのタイムシート概要ページは、該スーパーバイザの権限下の時間レコードのみをリストし得る。
【0260】
ページタイプが編集ページの場合、式の同じ評価は行をスキップし、これにより、情報
を非表示にするだけでなく、他の行の編集を可能にしながらユーザがいくつかの行を編集することを防ぐために入力制御が提供されることも防ぐ。これらのコンポーネントを一緒にすることの望外の効果は、タイムシートページ上で自分のタイムシートだけを見る従業員などのユーザがワークフローを定義できるようになり、“ready to submit”列を1つまたは複数のレコードに関してtrueに変更することができ、スーパーバイザは“ready to submit”列に基づいて閲覧する行を限定する式を有するページ上に現れたこれらのレコードを見ることができ、スーパーバイザは自分が監督する従業員のみに関する“approved”値を変更することができ、最終的にマネージャは承認されたレコードおよび承認された時間の総計のみを見ることができることである。手短に言えば、本明細書で説明される態様は、これまでは経験を積んだソフトウェア開発者の支援を必要としていた、カスタムの複雑なワークフローの作成を可能にする。
【0261】
ボタン
訪問者の便宜のために、例示的な実施形態によれば、値のテキスト編集をボタン制御へ変更するためのシグナルとしてデスティネーションシステムが見るタグを含むスプレッドシートツールのコメント特徴を用いて、メタデータが、セル、例えば、セルコメント上で指定され得る。例えば、設計者が各データレコード上の“approved”値を望んだ場合、文字列“true”をタイプするべくテキストボックスを訪問者に提示するのではなく、セルの値をfalseからtrueに変更することによりレコードの承認を示すべく訪問者がボタンをクリックできることが設計者に好まれる場合があり、その場合、訪問者は“false”に“true”を戻し入れるように変更し得る。これは、結果的により使いやすいシステムをもたらすとともに、値への変更が一方向であるケースの一助となる(例えば、falseからtrueになっても、設計者は、レコードが決してfalseに戻ることが有効であるとは感じない)。
【0262】
Insertページに関して、デスティネーションシステムのデフォルトのサブミットフォームボタンでさえも、スプレッドシートテンプレート内のどこかに配置される“=SubmitButton(Done,Green)”などのwebifierにより定義されるまたはwebifierにより理解される式関数を有するセルにより定義される外観および場所を有してよい。スプレッドシートツールがそれをサポートするならば、デスティネーションシステムがデスティネーションページ上のサブミットボタンの位置の基礎として用いることになるフローティングボタンを配置するのにドラッグおよびドロップ式のフローティング制御を用いることもできる。このようにして、スプレッドシートにより定義されないインターフェースである、デスティネーションシステムの実際の“hard-coded”インターフェースが、デスティネーションページ上で最小にされる。
【0263】
セキュリティ+間接的な(カスケーディング)フィルタリング
入力を防ぐことは、設計者がソースはレコードシートであると指定したページに関する制御を無効にすることまたは非表示にすること、若しくはサーバが多少なりとも制御を訪問者に送信しないようにすることを含むことができる。セキュリティのために、サーバはまた、例示的な実施形態によれば、訪問者は通常のブラウザではなく悪意のあるエンドポイントである可能性があるため、HTTP POST要求を用いて投稿されるサブミットされた入力が同じ論理に基づいて許されるかどうか、制御がユーザに提示されたかどうかを確認し得る。様々な行レコードをポピュレートされることを意図された他のテンプレートスプレッドシートを利用する他のデスティネーションページはまた、同じ論理を用いて許容を評価する。例えば、インボイス詳細テンプレートのTemplate Sourceを有するインボイス詳細レポートページが、デスティネーションシステムの訪問者によりアクセスされており、且つ、インボイスレコードリスティングシート上の行2上にインボイス205をポピュレートされている場合、デスティネーションシステムは、行2が行2へのアクセスを制約する式を有するかどうかを指定する列に関するインボイスレコード
シートをチェックすることができる。制約する式を有する場合、デスティネーションシステムはまた、インボイス205に関するインボイス詳細レポートページへのアクセスを制約することになる。ネストされるテンプレートの場合、または単一のテンプレートに複数のソースシートが用いられる場合、および他のこのような複雑なシナリオでは、デスティネーションページの一部はポピュレートおよびレンダリングされ、一部はされないが、カスケーディングの基礎をなす方法は残る。
【0264】
列全体ではなく単一式
レコードごとの式を有する列を追加することの代替は、例示的な実施形態によれば、シート上のまたはシートの外部の指定されるまたは参照される場所に入力され、デスティネーションシステム内に格納される、別個の単一式を有することである。この代替では、デスティネーションシステムは、各行を通して反復し、反復している現在の行またはレコードに式を適用することになる。webifierの他の領域は、代替的な式の同じ集中化を利用し得る。
【0265】
例えば、行ごとのパーミッションに関係する前の例では、本明細書は、C1内の“=IsLoggedInUser(A1)”などの式を有する列C、行2に関する“=IsLoggedInUser(A2)”などの式、などの例を与えた。設計者は、次いで、各それぞれの行に関する列Aを指すログインユーザへのパラメータと共に、すべてのレコードに関して式をコピーしてよい。しかし、この関数は厄介であり得る。代替的な例は、ソースレコードを指すページの作成中にオプションとしてシートに別個に定義される、“=IsLoggedInUser(A)”、または普通のスプレッドシートの式構文とは異なる構文を有することである。デスティネーションシステムは、次いで、一般に列を指す“A”パラメータが、“value in column A for the row
representing the record currently in question(当該レコードを表す行に関する列Aの値)”に等しいと理解し得る。言い換えれば、これは、式を、上記の列Cを有することに等しいと理解し得る。別の代替的な例として、“=IsLoggedInUser(A)”式は、行レコードと同じシート上のどこかの単一セル内に、おそらくセル“Z1”における行レコード情報のはるかに右に配置され、フィールドは、どんな単一セルが行ごとのパーミッションに関する式を表すかを指定するページ定義ステップ中に存在し、このような例では“Z1”に設定され得る。
【0266】
オーバーレイシート
往々にして、単一のレコードシートは、異なるパーミッションおよび異なる意図された訪問者を有する多くのデスティネーションシステムページの基礎である。このようなケースでは、例示的な実施形態によれば、それぞれのデスティネーションページのパーミッションに影響を及ぼすべく異なる式を含むためにいくつかの列を用いることもできる。代替として、デスティネーションシステムは、スプレッドシート定義にOverlay Sheetを追加してよい。Overlay Sheetは、最初にすべて同じ値を有する行レコードシートの複製であり得る。これは、行レコードシートに基づくことを意図されたおよびページに固有の修正を有することを意図されたシートとして、シートのスプレッドシート定義上のメタデータと共に、デスティネーションシステムによりOverlay Sheetとしてフラグを立てられ得る。設計者は、次いで、Overlay Sheetに列Cを追加してよく、デスティネーションシステムは、上記とほぼ同じように列Cを用いてよいが、代わりに行レコードシートに追加されたかのように式を評価し、これは、Overlay Sheetが作成されてからリストが変更された場合に行レコードの最新のリストに対してそれが作用することを可能にする。異なるデスティネーションページに関する異なるOverlay Sheetsは、異なる列C式を有し得る。Overlay Sheetsは、ベースの内容を同期して保つために、行レコードシートが変更されたときにはいつでも更新され得るが、意図された新しい列Cだけは例示的な違いとして
持続する。
【0267】
Overlay Sheetsが、セル位置またはどの挿入された新しいセルへの変更も有さないが、セルへの視覚的な書式設定の変更のみを含むようにすることが可能である。例えば、Overlay Sheetsは、フォントカラー、フォントサイズを変更し得る、または同じくデスティネーションページからそれぞれの内容を非表示にするためにスプレッドシートツールの伝統的な“hide columns”特徴を用い得る。レギュラーシートとの混同を避けるために、Overlay Sheetsは、種々の方法でオーバーレイとしてユーザに示され得る。例えば、スプレッドシートの背景は、シートの全体を通して、指定される色、例えば、水色に設定することができる(
図39)。
【0268】
往々にして、テンプレートまたはOverlay Sheetsは、スプレッドシートツールがシートのリストからシートを非表示にすることをサポートする場合に”hidden sheets”とすることができ、或いは、テンプレートシートは、他のタイプのシートとは別々にリストすることができる。設計者が特定のページを見ているときに、これらの付加的なシートは、閲覧が完了するまで自動的に再表示されることになる。
【0269】
伝統的なスプレッドシートテーブル
デスティネーションシステムが、ページ作成中に列Cが行ベースのパーミッションを指定することを示すフィールドを有するのではなく、代替は、例示的な実施形態によれば、これを暗示するスプレッドシート定義を有することである。スプレッドシートは、伝統的な“spreadsheet tables”を有してよく、これは通常、セルの領域を備え、スプレッドシートツールを色付けすることができ、ヘッダロー上のフィルタオプションおよびソートオプション、および伝統的なスプレッドシートツール内で閲覧されるときのシート内の行の表示を管理するための他の特徴を有することができる(
図74)。webifierは、ページのために用いられるソース行レコードシートのスプレッドシート定義におけるまたはページのために用いられるOverlay Sheetにおける伝統的なスプレッドシートテーブルの存在をチェックすることができ、テーブルが存在する場合、webifierは、フィルタリング、ソーティング、および他の方法のためにテーブルの持続状態を見てよい。設計者が列Aによりテーブルのセルをソートした場合、デスティネーションシステムは、同様に列Aにより出力をソートすることになる。列Cの式に基づいて行ベースのフィルタリングパーミッションを選ぶ、前の例に関して、設計者は、テーブルを列“C=true”上でフィルタするように設定することもでき、デスティネーションシステムは、同じ論理で結果出力をフィルタすることになる。このようにして、ページの作成者が、行を見るのにtrue評価を必要とする行ベースのパーミッションを列Cが有することを示すことは必要とされない。
【0270】
例として上記の伝統的なテーブル方法を含むレコードをパーミッションがフィルタしている本明細書で説明されるあらゆる状況または方法に適用可能な、デスティネーションサーバは、随意的に、Reportページおよび不可にされたレコードを除いてスプレッドシート式内の集計関数を有する行レコードシートに依存する他のページタイプをレンダリングすることができる。この方法によれば、レコードごとのパーミッションはまた、例えば集計グラフを有するReportページに影響を及ぼすことになる。設計者はまた、基礎をなす行レコード・パーミッションによる影響を受けない集計グラフを有するべく、これをページごとに無効にすることもでき、これは、訪問者に集計情報を効果的に与えるが、粒度が細かいレコードごとの情報を保持し続ける。
【0271】
更新されたスプレッドシート定義の抽出
デスティネーションシステムが、デスティネーションシステムの訪問者に読出し専用および/または入力可能フォームおよび内容を提供するべく設計者のスプレッドシート定義
を既に利用した後で、およびデスティネーションシステムの訪問者がレコードをもしかすると修正または入力した後で、デスティネーションシステムは、例示的な実施形態によれば、すべてのデータおよびテンプレートの更新された、統一された、またはマルチパートの表現を、スプレッドシートツールに十分に適合するスプレッドシートフォーマットで、設計者に提供することができる。便宜上、これは、ステップ215で行われ得る場合の、抽出と呼ぶことができる(
図2)。抽出は、ダウンロードされるファイルとして、またはデスティネーションシステムから情報を受信し、スプレッドシートツール内のシートを更新するデスティネーションシステムのAdd-Onまたはプラグイン(
図54の“Download data”ボタン)を用いてスプレッドシートツールを更新することによって提供することができる。ほとんどのケースにおいて、設計者は、デスティネーションシステムからのさらなる関与が全くなしに、更新されたレコードを有するだけでなく、レコードシートに基づいて実際のデータを表示するレポートも有するスプレッドシートを受信するであろう。
【0272】
抽出は、スプレッドシート定義が最初にデスティネーションシステムに入れられたのと同様にして、しかし逆に行われ得る。1つの例において、デスティネーションシステムが、スプレッドシート定義を持続し、要求ごとにすべての修正を行った場合、デスティネーションシステムは、設計者のオリジナルのファイルのアップロードの逆を行うことのみを必要とする、すなわち、ブラウザによるダウンロードのためのファイルとしてxlsxデータを提供する。別の例において、デスティネーションシステムが、xlsxデータを解凍し、中身の解凍されたファイルをデータベースに格納した後で、スプレッドシート定義を持続した場合、システムは、各レコードに関する解凍されたファイルを作成し、データのすべてをxlsxファイルへ圧縮し、次いで、ファイルを設計者へのダウンロードとして提供することにより、ステップを逆にし得る。第3の例として、データベーステーブルがセルごとに1つのレコードを格納していたが、データベースに格納されたセルの内容のスキーマの変更がなかった場合、その逆は、すべてのデータベース入力を反復し、セルの内容をXMLへシリアライズし、解凍されたシートファイルを生成するべく他のデータベーステーブルに格納されたシートごとの定義を再導入し、次いで、他の例で示したステップを進めることを含み得る。第4の例として、ソーススプレッドシート定義が、定義をフェッチするweb-service API呼び出しによって提供されていた場合、その逆は、他のものを置き換えるべく新しいスプレッドシート定義を配信するAPI呼び出しを含み得る。
【0273】
時として、設計者が、1つまたは複数のレコードをポピュレートされた1つまたは複数のシートテンプレートと共に1つまたは複数のスプレッドシートファイルまたは1つまたは複数のスプレッドシート・シートを取得する場合に、設計者または他のユーザは抽出を行うことができる。例えば、この種の抽出は、結果的に100シートを有するスプレッドシートを生じる場合があり、その各シートは、シートテンプレートのうちの1つの形態で表示されるインボイスである。設計者のために抽出をパッケージするステップおよび例は、同様であり得るが、いくつかの違いは、デスティネーションシステムが、Reportページを生成する早い段階でそれが行うようにテンプレートシートにポピュレートするステップに従う必要があるが、その後、セルを他のフォーマットへ変換するのではなく上記で提供された抽出ステップに結果をリダイレクトし、その後、テンプレートシートに他のレコードをポピュレートすることを反復することである。
【0274】
Add-On(プラグイン)は、典型的なプッシュ通知またはポーリング方法を介して、リアルタイムのリロードおよび更新を、デスティネーションシステムがそれらを利用可能にする場合に設計者に提供し得る。典型的に、これは、抽出ステップが、シートまたはセルのどちらが訪問者により変更されようともそれに行われることに限定されることを意味し、Add-Onは、残りには触れないまま、これらのシートまたはセルのみを更新す
る。Add-Onは、すべてユーザの最小の関与でまたは関与なしに、更新のリアルタイムチェックを有するが、任意の新しいスプレッドシート定義をローカルファイルとしてハードドライブ上にダウンロードおよび保存し、次いで、これを開くようにスプレッドシートツールをトリガする、ハイブリッド手法を取り得る。
【0275】
スプレッドシート定義の継続的編集
Add-Onを介してまたは他の方法でファイルとしてまたはスプレッドシートツールへ抽出されるのいずれであるかに関係なく、例示的な実施形態によれば、設計者は、このとき、デスティネーションシステムを用いる前に行ったのと同じようにテンプレートシートおよび/またはレコードシートにさらなる修正を行うことができる。実際には、設計者は、デスティネーションシステムに空またはほぼ空のスプレッドシート定義を入れ、次いで、設計時間に関連する任意のデスティネーションシステム特徴を活用するべく、抽出された後にのみスプレッドシートの構築を始めることを選択し得る。単純な例として、特定の新しいweb-appを示す特定の新しいスプレッドシートは、デスティネーションシステムがこの新しいweb-appをappのリストに表示することに起因して、そのユーザにより設計されていることを他の設計者に協調のために気付かせる。
【0276】
デスティネーションシステムは、設計者がスプレッドシートの編集中であると示した時間中にまたは設計者が編集していることをAdd-Onがデスティネーションシステムサーバに知らせる場合に、訪問者からのすべてのアクセスをロックまたはブロックする、読み出しアクセスのみを有する、または読み出しおよび挿入アクセスのみを有するためのオプションを有し得る。このようなブロッキングは、典型的に、設計者が編集しているシートと同じファイルから生じるシートを訪問者のページが必要とするかどうかを判定することにより、またはおそらく、それが同じファイルからのものであるかどうかまたは訪問者のシートから編集中の設計者のシートへの何らかの直接的な参照または間接的な参照を再帰的にシークする存在があるかどうかを判定することにより、設計者が現在編集しているものに関係したシートのみに制約される。これは、訪問者による変更と設計者による変更との予期しない衝突を防ぐ、または設計者による変更の進行中の不完全な組から導出されるページを訪問者が見ることを防ぐ。これらの状況を回避する一助となる別の技術は、設計者がスプレッドシート定義への変更を行うつもりであることを同じく手動で指定するかまたはこれを検出するAdd-Onを介して自動的に示すことにより、デスティネーションシステムにそれが格納する表現をステージング領域にコピーさせることであり、この場合、設計者による変更は、設計者が変更のグループを完了し、変更を稼働させる準備ができたことを示すまでステージング領域にのみ影響を及ぼし、準備ができたことを示した時点で、ステージング領域はライブweb-app上にコピーバックされる。その時間中に、ライブweb-appは、完全にブロックされるか、読出し専用に設定されるか、または続行することを許されるが、ステージング領域上で動作している間に設計者が行った変更は、個々の設計者による編集をライブweb-appのレコードとマージすることができるまたは新しいスプレッドシート定義をライブweb-appのレコードにアップロードおよびマージすることができるのと同じ方法によりlive appを保持しながらlive appにグループとしてマージされる。
【0277】
訪問者からのweb-appの最新の変更のマージと設計者の変更のマージは、両方ともスプレッドシート定義フォームにあるときに行うことができるように、データをマージするためのいくつかの普及した一般的な方法を採用することができる。各変更を受け入れるか、または拒否するべく、スプレッドシートの差異を識別し、これらの差異を通して反復することを可能にするために、市販のライブラリおよびツール、ならびに、3つのスプレッドシート:オリジナル、変更されたバージョンA、および変更されたバージョンBを比較するライブラリおよびツールが使用され得る。これらは、競合しない変更を反復し、処理し、競合を完全に拒否するかまたはどのバージョンが勝つかについての決定を下すべ
くユーザに競合情報を提示する。
【0278】
マージする1つの方法は、webifierソフトウェアの期待される使用に最も貢献する様態でいくつかの他の技術を組み合わせることである。例えば、設計者は、テンプレートシートへの変更の開始を許されてよく、デスティネーションシステムは、レコードシートへの訪問者による変更をブロックしないであろう。デスティネーションシステムがテンプレートシートを変更する訪問者を有することは稀であるが、特に、設計者がどんなシートについて報告するかを選択するときにデスティネーションシステムはすべてのシートを一般的に取り扱うことができるため、確かに可能性はある。それでもなお、デスティネーションシステムは、デフォルトでテンプレートシートへの変更のみをブロックしてよく、これにより、それがTemplate Sourcesシートとして参照されたか否かに関係なく、設計者がページの作成中に該シートをどのように参照したかを通じて反復することにより、それが知ることができるのは排他的にテンプレートシートである。設計者が、提案した変更の影響をプレビューすることを望んだ場合に、デスティネーションシステムは、ステージング領域を自動的にセットアップし得る。設計者が、レコードシートを修正する際に検出された場合に、webifierシステムは、web-appの付加的な関連部分を同時入力からブロックすることを設計者に促し得る。この手法では、設計者に競合の解決を促すことは回避することができ、設計者は、依然としてテンプレートシートの変更を介してデスティネーションシステムのユーザインターフェースを更新し、デスティネーションシステムがそれが格納しているどの以前のまたは新しいレコードも廃棄しないようにすることができる。
【0279】
Insertタイプおよびいくつかの他のタイプの編集の場合には、レコードへのInsertタイプの編集でさえも、競合の解決を促すことなくデスティネーションシステムおよび設計者のツール上で同時に可能である。シンプルな手法は、それらのセッションの開始時にまたは設計者が設計作業を行う意思を示した後で、および、設計者の変更をオリジナルと比較してどのレコードが新しいかを判定し、デスティネーションシステムにそれらのそれぞれを追加させるために次にアップロードするときに、設計者に送信されたオリジナルのスプレッドシート定義のコピーを保ち、設計者からのこれらの新たに挿入されたレコードがマージされている間は、デスティネーションページが動作および挿入を続けることを可能にするべく短くロックすることである。同様の様態で、設計前のオリジナルを保存し、どのレコードが欠落しているか、したがって、更新されることを意図して削除または修正されることを意図されているかを判断するべく、設計者の次のアップロードと比較することもできる。加えて、設計前のオリジナルと比較する同じ方法は、レコードシートからの列の追加または除去、および、web-appの構造への設計者による変更と一致するおよびそれを示す対応するテンプレートシートの変更を明らかにすることもできる。すべてのケースにおいて、デスティネーションシステム上の古いレコードと、新たに訪問者により追加されたまたは訪問者により修正されたレコードとの両方は、完全なままであり、最終結果は、デスティネーションシステムが訪問者に送信するインターフェース、並びに、レコードの構造を、例えば、1つのステップで、同時に更新することができる状態での、レコードへの設計者による変更と訪問者による変更との賢明な融合である。
【0280】
スプレッドシート定義の継続的編集を可能にする際の課題は、デスティネーションシステムが格納する範囲への任意の参照が期限切れとなり得るように設計者が列または行に変更を加え得ることである。これへの1つの解決策は、Add-Onが、参照されるスプレッドシートセルの場所、行および列のインデックスへの変更を待つようにし、デスティネーションシステムをイベントごとにまたはイベントグループごとにリアルタイムで適宜更新することである。例えば、デスティネーションシステムが“A5:A10”の範囲参照を有し、且つ行が最上部に挿入される場合、適切なイベントリスナーへフックされるwebifier Add-Onは、行1よりも下の任意の範囲を、例えば、このケースでは
“A6:A11”に下方シフトすることをデスティネーションシステムに通知する。
【0281】
設計者がスプレッドシート定義をオフラインでおよびインストールされたAdd-Onを有さないコンピュータ、基本的に、修正されていない第三者スプレッドシートツールとスプレッドシート定義のコピーのみを有するコンピュータ上で修正できるようにするさらなる融通性(“Disconnected”設計と呼ばれる)を可能にするには、その課題は大きく、上記のソリューションでは十分でない場合がある。このケースでは、デスティネーションシステムは、スプレッドシートツールが設計者の変更に基づいて名前付き範囲を更新し、名前付き範囲へのこのような変更はwebifierシステムにより観察することができるため、スプレッドシートの伝統的な名前付き範囲特徴のピギーバックをオフし得る。この手法は、デスティネーションシステムに影響を及ぼすスプレッドシート定義を接続解除された状態で修正するこの望ましい融通性を可能にする。
【0282】
特に、レコードをアップロードするためのおよびインターフェーステンプレートをアップロードするための別個のステップは必要とされず、それらは1つのステップで、設計者により、または自動的に、デスティネーションシステムに提供される1つのスプレッドシート定義と共に行うことができる。もちろん、要望に応じて別個のステップも用いられ得る。
【0283】
設計者は、デスティネーションシステムが設計者または訪問者から付加的な変更を受信したことが“Server Changes as of<date>”ポップアップなどで通知され得る(
図53)。デスティネーションシステムの一般的なプッシュ通知またはポーリングが、これを達成するのに用いられ得る。これは、設計者が編集を行った後で設計者が同時編集の競合を低減することを可能にする。
【0284】
名前付き範囲
Add-Onを通じて行われたときに、webifierシステムは、例示的な実施形態によれば、スプレッドシートから(例えば、後述のCOM Interopライブラリを介して)またはデスティネーションシステムサーバから名前付き範囲を取得し、その名前を、JavaScriptを用いてAdd-Onのウェブベースのユーザインターフェースに渡し得る。webifierは、デスティネーションページを作成または編集するときに、または、デスティネーションシステムがスプレッドシートセルへの参照を必要とするおよび処理されるべき訪問者要求のために参照がデスティネーションシステムにアクセス可能である必要があるあらゆる他のフィールドまたは状況で、データソースに関する現在選択されたセルを取り込むために新しい名前付き範囲を作成し得る。これらの範囲の名前は、“WebifierCustomRange”であり、例えば0~2,147,483,647のランダムに生成される数が付属し得る。その名前をもつ範囲が既に存在する場合、新しい乱数は、作成された名前が既存の範囲に付いていないようになるまで生成され得る。代替的に、インクリメント数が用いられ得る。選択されたセルに関するカスタム範囲が既に存在する場合、システムは、別の名前を作成するのではなく既存の名前を用いることを選んでよい。行の挿入または列の挿入などのスプレッドシートツールにおいて実行される動作は、通常のスプレッドシートツールの使用のように名前付き範囲を拡大する。レコードが、そのソースとして名前付き範囲を有するInsertまたはCSV Importページを介して挿入される場合、これは、該範囲を、挿入されたレコードを含むように拡大することになる。任意のwebifierウェブページにより参照される名前付き範囲がスプレッドシート定義から削除される場合、シートがアップロードされるときに、システムは、無効なソースを有する影響されたページをマークすることになり、それらは、ソースが編集されるかまたは削除された名前付き範囲がリストアされるまで、アクセスできないであろう。名前付き範囲は、Insert、Edit-Cells、Edit-Record、CSV Import、Report、Webpage、Cal
endar、およびDetails Reportページの境界を定義するのに用いられ得る。名前付き範囲はまた、Insertページ、Edit-Cellsページ、およびEdit-Recordページに関するヘッダ範囲を定義するため、およびEdit-CellsページおよびEdit-Recordページに関する編集可能な範囲を設定するために用いられ得る(
図81)。Edit-Recordページを用いると、名前付き範囲は、その範囲内のすべてのセルが削除される場合に自動的に削除され得る。
【0285】
例として、自動的に生成されるフォームインターフェースを有するInsertページは、典型的に行レコードシートを指すソース範囲を必要とする。設計者が接続解除された状態で行レコードシートに列を追加するが、更新された定義を後でアップロードする場合に、デスティネーションシステムは、新たに挿入された列を含む更新された名前付き範囲を見ることができるであろう。この例では、Insertページは、該ページが訪問者にフォームを送信するときに付加的なラベルおよびhtml入力制御を生成することになり、訪問者は、このケースでは設計者によるさらなるアクションが必要とされずに、情報の新しい列を含む新しいレコードを生成し始めることになる。
【0286】
セルごとのトラッキング
トラックするセルのボリュームが非常に高い場合、名前付き範囲は、例示的な実施形態によれば、デスティネーションシステムにより生成され、抽出されたスプレッドシート定義のすべてのセルに挿入されるユニークセルIDを含む付加的な属性を有することと組み合わせる、またはそれに完全に置き換えることができる。多くのスプレッドシートツールは、スプレッドシートツールが属性の目的の理解を有していないにもかかわらず、スプレッドシートツールにおいてセルが修正または移動またはコピーされていても、この属性をメタデータとして定位置に保つことになる。これは、名前付き範囲の同じ利点の多くを与えるが、スプレッドシートツールのユーザインターフェースにおいて設計者に可視とはなりそうにない。デスティネーションシステムは、次いで、接続解除されている状態でユーザがどんな変更を行うかの知識を取得するべく他のセル属性とほぼ同じようにユニークIDを抽出する。その知識は、次いで、これらのセルへのデスティネーションシステム上の参照を更新するのに用いることができる、または代替的に、これらのユニークセルIDは、あるケースでは、伝統的な行および列のインデックス付けを用いるのではなくセルを指すのにデスティネーションシステムが用いる方法として十分であり得る。範囲はさらに、範囲の左上隅および右下隅を表すUID:UIDとして指定することもできる。
【0287】
同様の様態で、他のメタデータを、設計者に非表示にされるスプレッドシート定義の他の部分に格納することができる。例えば、シートを必要とするデスティネーションページへのリンクは、シートのXML定義内の属性に格納することもできる。スプレッドシートツールが、名前付き範囲がするように自動的に更新される範囲が存在するが、その範囲がユーザに可視ではないスキーマをサポートする場合、該特徴はまた、名前付き範囲に取って代わり得る。
【0288】
デスティネーションシステムのための構成シート
“Configuration Sheets”と呼ばれる名前付き範囲への代替の手法はまた、例示的な実施形態によれば、名前付き範囲の位置に代入することもできる。この手法は、スプレッドシートツールが非表示にされるシートをサポートする場合に潜在的に非表示にされる“DestinationSystemRanges”という名前の付加的なシートを含んでよく、該シートは、名前および範囲の2つの列を有する。デスティネーションシステムは、次いで、アップロード中にまたは各訪問者の要求時に該シートを通して反復し、第1の列の値により、デスティネーションシステムが分解しようとしている範囲を見つけ出すことになる。例えば、“Page1_SourceRange”が、名前のうちの1つであり得る。デスティネーションシステムは、次いで、第2の列のセル
の値または式を取得し、これを名前付き範囲の定義とほぼ同じように用い得る。この手法の利点は、値が実際に伝統的なスプレッドシート式であり得ることであり、したがって、範囲の定義でさえも、スプレッドシート定義の他の要素により影響を受けることがある。これは、望外な量のパワーおよび融通性を与える。例えば、インボイスの合計が>$5000である場合に、詳細ページは、そのページソース構成において、訪問者に示すことが望ましい、しかし該インボイスのみに関する付加的な細字部分をおそらく有する追加の5つの行を含むべきであるという式を指定することもできる。同時に、スプレッドシートツールは、範囲を名前付き範囲とほぼ同じように自動的に同期して保つことになる。これは、特に、最小の付加的な努力またはトレーニングで若しくはそれらなしに、カスタムのレポートの構成を設計者が効果的に修正することを可能にする。
【0289】
ページタイトルなどの、デスティネーションページを提供するためにデスティネーションシステムに必要とされるデータおよびメタデータ情報は、スプレッドシート定義とは別個のデータベースに格納され得る。構成シートが名前付き範囲を置き換えることができるのとほぼ同じように、デスティネーションシステムに固有のすべてのデータは、スプレッドシート定義に含めることができ、重要なことには、よく知られたスプレッドシート・インターフェースおよび手法で設計者により編集可能である。別の例は、構成シートにおいて定義されるページタイトルであり、これは、ページタイトルが、設計者が選ぶ任意の式の結果となることを可能にする。“Profit/Loss Report”のようなページタイトルは、セルが>=$0である場合に“Profit Report”とすることができ、セルが<=$0である場合にタイトルは“Loss Report”となるであろう。別の例は、通知システムへの入力である。“=IF(OtherSheet!A1>10,“Thomas”,”Patrick”)”などの式は、レコードシート内の値に基づいて通知のデスティネーションを変更することもできる。これはまた、設計者が指定するおよびそれ自体が設計者により構成されるようにするためにこの発明の基礎をなす概念を若干周期的な様態で利用する式に基づいて、配信の時間またはあらゆる他の通知属性を変更することもできる。いくつかのスプレッドシートツールは、ツール内でアクセスされたときにセルが読出し専用である場合に、セルのメタデータを受け入れることができる。このようなケースでは、Configuration Sheetsは、Configuration Sheetへの偶発的なまたは不適合な設計者による修正の可能性を低減するべく読出し専用にマークされるいくつかのセルを有し得る。例えば、Configuration Sheetは、前述のDestinationSystemRangesシート上の第2の列以外のすべてのセルを読出し専用にし得る。
【0290】
最終的に、この手法を全体を通して一貫して実装する、デスティネーションシステムのweb-appの定義全体は、接続解除された状態で移動可能および構成可能であり得る。同時に、web-appの定義全体は、式により駆動され、任意に定義可能であり、定義の他の部分に依存し、その他の点では、レコードシート、テンプレートシート、それ自体、現在の日付のような関数の結果などへの無制限の予測不可能な接続を有し得る。
【0291】
外部補足データ:ファイル
ファイルは、例示的な実施形態によれば、WEBIFIERINSERTFILE関数を用いてデスティネーションシステムにアップロードされ得る(
図7)。InsertページまたはEdit-Recordページに関するフォームを構築している間にWEBIFIERINSERTFILE列を含むフィールドに出会うときに、該フィールドに関するFile Upload制御が提示され得る(
図62)。同様に、Edit-Cellsページ上のWEBIFIERINSERTFILE関数を含むセルを編集するときに、設計者は、式を編集するまたは新しいファイルをアップロードする選択肢を有し得る。Add-Onを有するスプレッドシートツールにおいてWEBIFIERINSERTFILEに出会うときに、これは、WEBIFIERFILEATTRIBUTES関数を用
いてファイルについての情報を取得するのに用いることができるキーを表示し得る(
図64)。
【0292】
ReportページまたはEdit-CellsページにおいてWEBIFIERINSERTFILEに出会う場合に、ファイルがデスティネーションページ上に表示され得る。訪問者は、これらのアップロードされたファイルをファイルタイプに応じて異なる様態で閲覧することができる。それがイメージである場合、これはセル内に表示され得る(
図63)。それがオーディオファイルである場合、訪問者は、HTML5オーディオプレーヤを用いてそれを聴くことができる。それがビデオである場合、訪問者は、HTML5ビデオプレーヤを用いてそれを見ることができる。それが任意の他のタイプのファイルである場合、訪問者がそれをダウンロードするべく従うことができるリンクが表示される(
図61)。
【0293】
設計者は、デスティネーションシステムの管理ページから、システム上のファイルを閲覧し、ソートし、ファイルキー、サイズ、およびどのweb-appに各ファイルが属するかなどの詳細を得ることが可能であり得る。ファイルはまた、どんなファイルがweb-appと関連付けられるかのeasyビューを得るべくweb-appにより閲覧され得る。特定のユーザまたはユーザのグループだけがファイルにアクセスすることができるようにファイルにパーミッションも適用され得る。デスティネーションシステムは、式における該ファイルの組を参照する任意のセルへのアクセスを有する訪問者に基づいてこれらのパーミッションを取得し得る、または代替的に、デスティネーションシステムは、ファイルグループをリストする別個の構成インターフェースを有し、それらの共有設定の修正を可能にし、ファイルの新しい組に関するパーミッションのデフォルトの組を指定し得る。
【0294】
アップロードされたファイルは、実際のファイルディレクトリに、またはキーがwebifierに供給されたまたはwebifierにより生成された後で名前付けされるディレクトリにおける、ファイルがアップロードされたweb-appと関連付けられる、データベース仮想ファイルリスティング、ファッションに格納され得る。格納されるファイルのタイプは、ファイルのMIMEコンテンツタイプにより決定され、ファイルを表示するために記録され得る。複数のファイルが、同じキーの下で格納されてよく、webifierファイル機能のインデックスパラメータによりアクセスすることができる。
【0295】
WEBIFIERINSERTFILE関数は、値または式からなるゼロ、1、または2つのパラメータを可能にし得る(
図7)。第1のパラメータは、後でアップロードファイルを取得するのに用いることができるキーである、随意的な文字列パラメータである。キーが指定されない場合、グローバル一意識別子(GUIDまたはguid)が生成され、キーとして用いられ得る。キーが指定される場合、ユーザはまた、そのキーの下に示されることになるファイルのインデックスであり得る随意的な整数パラメータを含むことができる。インデックスが指定されないまたはインデックスがファイルの量よりも大きい場合、関数は、表示されるときに最新のアップロードされたファイルを示し得る。ファイルがInsertページにアップロードされるときに、新たに挿入されるセルに関数WEBIFIERINSERTFILEがオートフィルされ得る。式における第1のパラメータは、以前のセルと同じキーであり得る。以前のセルキーパラメータがセル参照であった場合、これは下のセルを指すべく自動的に増分され得る。第2のパラメータは、セルがウェブサイト上で閲覧されるときに新たにアップロードされたファイルを表示し得るようにファイルの新しいナンバーであり得る。
【0296】
WEBIFIERFILEATTRIBIUTES関数は、値または式からなる1、2、または3つのパラメータを可能にし得る(
図5)。第1のパラメータは、ファイルに関
する文字列キーであり、随意的であり得る(図示していない)第2のパラメータは、その属性を得るべくキーの下に格納されるインデックスであり、同じく随意的である最後のパラメータは、取得されるべき属性の名前または数である。ファイルの名前に関する“Name”または0、KBにおけるファイルのサイズに関する“Size”または1、ファイルがアップロードされた日付に関する“DateUploaded”または2、およびウェブサイト上のファイルを閲覧するためのURLに関する“Link”または3。インデックスが指定されないまたはインデックスがファイルの量よりも大きい場合、関数は、最新のアップロードされたファイルの属性を得てよい。属性が指定されない場合、関数は、デフォルトで、ファイルの名前を示すことに設定され得る。
【0297】
外部補足ファイルシステムの上記の変形および特徴のすべては、セルごとに単一ファイルのバリエーションまたはセルごとに複数のファイルおよびファイルフォルダのバリエーションに当てはめることができる。
【0298】
外部補足データ:署名
署名は、イメージをアップロードする訪問者のために前述のファイルに基づく外部補足データを用いるのと概ね同じ方法論を用いてデスティネーションシステムにアップロードされ得る。しかしながら、この署名が外部データの形態であるケースでは、ファイルアップロードダイアログおよび制御は、ユーザが署名を入力することを可能にする制御と置き換えられ得る。例えば、レコードシートは、“=WEBIFIERINSERTSIGNATURE(A2,‘thumbnail’)”に似ているすべての行レコード上の式をもつ列を有してよく、この場合、列“A”は、従業員の名前などの一意識別子として役立つことができるデータを有し、A2における“2”は、適切な行に変化し、“presence”は、セルが、署名が利用可能な場合に署名のサムネイル、または署名がまだ利用可能でない場合にテキスト“n/a”を示すことを示す。設計時間中に、Add-Onは、それらをセル内に表示するために各レコードに関するこのようなサムネイルをフェッチし得る。ソースがレコードシート全体に設定されるReportページの訪問者に関して、署名サムネイルは、デスティネーションページ上に表示されるすべてのレコード行の傍に現れ得る。サムネイルは、署名が取り込まれた日付および時間などのメタデータと一緒に取り込んだ署名の大きくポップアップするビューを開くべくクリック可能であり得る。InsertまたはEditデスティネーションページ上で、大きいポップアップビューはまた、大きいキャンバス領域を有してよく、その場合、ユーザによるマウス、デジタルタブレット上のインクレスペン、またはタッチスクリーン上の指の動きが、キャンバス領域にその動きをペンとして取り扱わせ、対応するラインをキャンバス上に引かせることになる。それを行うおよびフォームのサブミッション時にサーバにアップロードされることになるイメージデータと共にhtml入力フォームを提供するのに通例JavaScriptコードを用いる、このようなキャンバスによるイメージファイルへの署名などの動きを取り込むための市販のモジュールが存在する。この例を続けると、デスティネーションシステムは、レポートページ上のレコードに関するその後の署名データの閲覧要求時に取得されるように、署名を表すイメージファイルをデータベースに格納し得る。視覚署名の代替として、デジタル署名を表すデータが、PGP signed署名の多数の第三者型発行者のうちの1つからクライアント側のJavaScriptにより取得されてよく、このようなデジタル署名の手書きのようなフォントを用いるテキスト要約またはトークン人工署名が、署名イメージの位置に表示されてよい。訪問者は、第三者型発行者がデジタル署名を発行するために、このようなハードウェアのための市販のインテグレーションポイントを用いて、ユーザ名とパスワードのペアまたはモバイルデバイスの親指スキャナ上の親指の指紋などの、認証情報の入力を必要とされ得る。
【0299】
外部補足データ:チャット
チャットオブジェクト特徴は、例示的な実施形態によれば、チャットディスカッション
のストリームがスプレッドシートの1つまたは複数のセルに埋め込まれるまたは関連付けられることを可能にする。チャットオブジェクトは、他の訪問者が閲覧することができるセルに訪問者がメッセージを追加することおよび該セル上に他者または自分により残されたメッセージを閲覧することを可能にする(
図58)。チャットオブジェクトは、メッセージオブジェクトのリストを表し、各メッセージオブジェクトは、典型的に、少なくとも3つの部分:メッセージテキスト、メッセージをサブミットした時を示すタイムスタンプ、およびメッセージをサブミットしたユーザのユーザ名からなる。各チャットオブジェクトはまた、一意識別子、すなわち、他のチャットオブジェクトとは別個の識別子を有し得る(例えば、
図59の“6ea6cc…”。識別子は、ユーザに割り当てられたものまたはシステムに割り当てられたものであり得る。チャットオブジェクトの識別子は、チャットオブジェクトを指すためおよびこれを他のチャットオブジェクトから区別するためにwebifierにより用いられ得る。
【0300】
チャットオブジェクトは、webifierシステムにより定義されるカスタムの式関数であるWEBIFIERINSERTCHATと呼ばれるinsert-chat式関数を入力することにより作成することができる(
図6)。この機能をセルに入力するために、ユーザは、該セルに関する式を設定するのにパーミッションを有する必要がある。これは、可能なwebifier API呼び出しを通じて、またはwebifier Add-Onがインストールされたスプレッドシートツールを通じて、を含む種々の方法で行うことができる。
【0301】
セルにチャットオブジェクトを作成するために、設計者は、セルの式を、パラメータなしのinsert-chat関数(すなわち、‘=webifierINSERTCHAT()’)に、唯一のパラメータとしてグローバル一意識別子(GUID)の標準ハイフン区切り文字列表現を有するinsert-chat関数(例えば、‘=webifierINSERTCHAT(”DC40FCA2-D72A-4AFD-80E4-76782B47D960”)’)に、または識別されるのが該会社に関するレコードに関係したチャットストリームを表すことになる“Pleasant Solutions”などのGUIDまたは文字列であるか否かに関係なく一意識別子に評価される式に設定し得る。異なるシートまたは同じシート上のいくつかのセルは、同じパラメータをWEBIFIERINSERTCHATに渡してよく、いくつかのデスティネーションページまたはページ内の場所が同じ共有されるチャットストリームを指すことを可能にする。
【0302】
ユーザがセルに関するinsert-chat式を設定し、これをデスティネーションシステムに保存するときに(例えば、それらがスプレッドシートツールおよびAdd-Onを使用している場合に、スプレッドシート定義の変更をデスティネーションシステムにアップロードすることにより)、webifierは、いくつかのステップを行う。第1に、これは、insert-chat式のパラメータなしのバージョンのすべてのインスタンスを、単一のGUIDパラメータを含むバージョンに置き換え得る。これは、バージョン4(IETF RFC4122)アルゴリズムを用いてGUIDパラメータの各インスタンスを生成し得てよく、これは、生成されるパラメータが、実際にはどの他のセルにおけるinsert-chat関数のGUIDパラメータとも別個であることを意味する。次いで、更新されたスプレッドシート定義を、デスティネーションシステムにアップロードする。
【0303】
チャットオブジェクトは、チャットオブジェクトが埋め込まれたセルを訪問者が閲覧することを可能にするページ上で訪問者が用いることができる(
図57)。例えば、チャットオブジェクトが、スプレッドシートの特定のシート上のセルに埋め込まれ、且つ、訪問者が、そのソースが該シートであるReportページへのアクセスを有する場合、訪問者は、デスティネーションページを通じて該チャットストリームと対話することができる
。
【0304】
デスティネーションシステムは、その式がinsert-chat関数であるセルを含むページをレンダリングするときに、該関数のGUIDパラメータを解析し、その一意識別子が解析したGUIDと一致するチャットオブジェクトが存在するかどうかを確かめるべく、そのデータベースをチェックする。一致が存在しない場合、その識別子が解析したGUIDであり、且つそのメッセージオブジェクトのリストが空である新しいチャットオブジェクトを作成し、これをそのデータベースに保存し、この新しいチャットオブジェクトをセルに関するチャットオブジェクトとして用いる。一致が存在する場合、一致するチャットオブジェクトを、セルに関するチャットストリームとして用いる。いずれのケースにおいても、デスティネーションシステムは、セルの内部に吹き出しアイコンおよび’Chat’という言葉を表示する。訪問者がアイコンをクリックする場合、該ページ上に、該チャットオブジェクト(もしあれば)に関する過去のメッセージオブジェクトを年代順に示すモーダルウィンドウが表示される。各過去のメッセージオブジェクトは、それが投稿された全日付および時間、その後にそれを投稿したユーザのユーザ名、その後にメッセージテキストが示される。過去のメッセージのリストの下に、訪問者が新しいメッセージを書き込むことができるテキストボックスと、新しいメッセージをサブミットするためのボタンが示される。
【0305】
訪問者が、チャットオブジェクトの過去のメッセージのリストの下のテキストボックスに新しいメッセージを書き込み(
図58)、このメッセージをサブミットする場合、デスティネーションシステムは、新しいメッセージオブジェクトを作成し、そのタイムスタンプをシステム時間に設定し、そのユーザ名を訪問者のユーザ名に設定し、そのメッセージテキストをテキストボックスにおいてサブミットされたテキストに設定する。次いで、チャットオブジェクトをメッセージオブジェクトと関連づけ、メッセージオブジェクトおよび関連情報をデータベースに保存する。最後に、新しいメッセージオブジェクトをクライアントに返してよく、これは、過去のメッセージオブジェクトのリストの下に、しかしモーダルウィンドウにおけるテキストボックスの上に新しいメッセージオブジェクトを表示するおよびページをまったくリフレッシュせずにテキストボックスをクリアするのにJavaScriptを用いてよい。訪問者は、テキストボックスにさらなるメッセージを書き込むことができ、これらのさらなるメッセージをサブミットすることは、同じステップを再びトリガし得る。訪問者は、もうそれ以上メッセージを入力することを望まない場合、モーダルウィンドウ外のどこかをクリックしてよく、これにより、それを通じて訪問者がチャットオブジェクトにアクセスしたモーダルウィンドウが閉じ、その後ろにあるページが明らかになる。
【0306】
Insert-chat式のGUIDパラメータはチャットオブジェクトの一意識別子として用いられるので、いくつかの異なるセルのinsert-chat式が同じGUIDパラメータを有する場合、これらのセルの埋め込まれたチャットオブジェクトはすべて同じチャットオブジェクトであるので、1つのセルに埋め込まれたチャットオブジェクトに追加されたメッセージオブジェクトは、他のセルに埋め込まれたチャットオブジェクトのメッセージオブジェクトのリストを示し得る。
【0307】
可能ないくつかの外部補足データシステムが存在する。前述の2つは、手法の単なる例であり、上記の例のうちの1つに関して説明した特徴の多くは他の例に適用可能である。
【0308】
別の態様によれば、ビデオチャットモジュールもまたまたは代替的に用いられ得る。ビデオチャットオブジェクトは、webifierシステムにより定義されるカスタムの式関数であるWEBIFIERVIDEOCHATと呼ばれるビデオinsert-chat式関数を入力することにより作成され得る。この機能をセルに入力するために、ユーザ
は、該セルに関する式を設定するのにパーミッションを有する必要がある。これは、可能なwebifier API呼び出しを通じて、またはwebifier Add-Onがインストールされたスプレッドシートツールを通じて、を含む種々の方法で行うことができる。
【0309】
セルにビデオチャットオブジェクトを作成するために、設計者は、セルの式を、パラメータなしのビデオinsert-chat関数(例えば、‘=webifierVIDEOCHAT()’)に、唯一のパラメータとしてグローバル一意識別子(GUID)の標準ハイフン区切り文字列表現を有するビデオinsert-chat関数(例えば、‘=webifierVIDEOCHAT(”GC40FCA2-D73A-4AFD-80E4-76782B47D960”)’)に、または識別されるのが該会社に関するレコードに関係したビデオチャットを表すことになる“Pleasant Solutions”などのGUIDまたは文字列であるか否かに関係なく一意識別子に評価される式に設定し得る。異なるシートまたは同じシート上のいくつかのセルは、同じパラメータをWEBIFIERVIDEOCHATに渡してよく、いくつかのデスティネーションページまたはページ内の場所が同じビデオチャットを指すことを可能にする。いくつかの態様において、WEBIFIERVIDEOCHAT関数はまた、設計時に入力としてエンドユーザによるビデオチャットの開始時の接続先を必要とし得る。
【0310】
デスティネーションページを生成するときに、Webifier論理は、ユーザによりアクティブ化されたときにエンドユーザと定義済みエンドポイント、例えば、設計時に設計者により識別されるデスティネーションとの間のビデオチャットを確立するビデオチャットモジュールをウェブページ上に含める、組み込む、または参照し得る。例えば、Drupal Video Chat、AVChat、Big Blue Buttonなどのビデオチャットモジュールが容易に入手可能である。
【0311】
訪問者入力の影響
以下に、1つの例示的なユースケースのシナリオでの、デスティネーションシステムに対する訪問者入力のプロセスおよび影響を説明する。webifierシステムにより生成されたInsertページフォームが訪問者によりサブミットされるときに、デスティネーションシステムは、最初に、ページがパブリックであることまたはそれを使用するのに適切なパーミッションがユーザに与えられていることを確認し得る。ユーザが許可される場合、デスティネーションシステムは、ページを含むAppに関連するスプレッドシート定義を取得し、挿入プロセスを開始することになる。ユーザがInsertページの使用を許可されない場合、それらのサブミッションが却下され、システムがユーザに通知し得る。
【0312】
レコードをスプレッドシート定義に挿入する前に、日付、時間、およびGPS座標データは、スプレッドシートツールに適切な文字列表現に変換されてよく、アップロードされた外部補足ファイルは、WEBIFIERINSERTFILE関数を参照する式により表され得る。スプレッドシートツールにおいて閲覧されるときに、関数は、WEBIFIERFILEATTRIBUTES関数で後の時点でデスティネーションシステムからファイルを取得するのに用いることができるキーを返し得る。
【0313】
すべてのデータが保存されるのに適切なフォーマットであれば、デスティネーションシステムは、ソース範囲の直後の行または列、若しくはワークシート全体がソースとして用いられている場合に次の空行または空列を見つけ出し、新しいデータをスプレッドシートへ挿入することになる。この時点で、スプレッドシート定義検証が評価され、その後、デスティネーションシステムにおいて別個に作成されている検証が続き得る。検証のいずれかが失敗する場合、ユーザは、通知され、それらのサブミッションを訂正する機会が与え
られ得る。Webifier式を含む任意の行または列が範囲内に存在する場合、それらは、それらがOverlay Sheetにより非表示にされている場合であっても、適切な式をオートフィルされ得る。
【0314】
データが上手く挿入された後で、新しいデータが挿入されたデータセットを構成するセルの範囲へのすべての参照が更新される必要があるであろう。これは、名前付き範囲である場合にPageのソース、Overlay Sheetに保存されたソートおよびフィルタ範囲、および拡大されたデータの範囲を表示する任意のChart Seriesを含み得る。すべての更新が完了すると、修正されたスプレッドシートが、任意の新たにアップロードされたファイルと共に、またデータベースに保存され得る。範囲は、どの行および列が現在含まれるかの数値表現を得るべくそれらを解析することができるようにR1C1文字列フォーマットに変換される。範囲値は、次いで、行の挿入のために1行または列の挿入のために1列だけ増分され、またR1C1文字列に変換され、またスプレッドシートに保存される。
【0315】
デスティネーションシステムは、電子メール警告を送信するのに通知システムにより用いられるInsert PageイベントおよびRaises the Insert and Page Changedイベントからのデータに応じて、デスティネーションシステム管理ページにまたはAdd-On内に示されるべき任意のページサムネイルを更新する。Insert Pageのために構成される‘Next Page’が存在する場合、ユーザは、それへリダイレクトされることになる。
【0316】
動的ページ選択
本明細書で説明されるように、同じレコードのために、および同様のまたは同じ目的のために、同時に、複数のテンプレートおよび複数のページが存在することができる。目的は、読出し専用と訪問者入力ページの両方を含む任意の目的またはページタイプとすることができる。デスティネーションシステムは、例示的な実施形態によれば、どのテンプレートを表示するかの決定を助けるために、ブラウザまたはモバイルクライアントからの情報を使用し得る。例えば、情報は、画面サイズ、画面解像度、OSバージョン、ブラウザのブランドおよびバージョン、テンプレートのどの組が好ましいかについての訪問者からの手動で指定される好み、および主としてマウス、キーボード、またはタッチスクリーンデバイスのいずれであるかなどのあらゆる数のデバイスの属性または能力を含み得る。web appの場合には、この情報の多くは、http“User Agent”ヘッダから、または、ウェブサーバによりセッション情報として一時的に格納されるこの情報をデスティネーションサーバにインバンドまたはアウトオブバンドで伝送するブラウザ上で実行するJavaScriptを有することにより得ることができる。モバイルappの場合には、appは、デスティネーションシステムへの最初のログイン認証時にこの情報を収集および送信するように設計することができる。
【0317】
設計者は、訪問者にアクセス可能となるのにどんな基準を各ページが必要とするかを指定するべくページ上のルールのセット、並びに、フォールバックデフォルトを指定し得る。デスティネーションシステムは、単一のURLまたはページ識別子を達成するおよびどのテンプレートを選ぶかの該単一場所トリガデスティネーションシステム選択への要求を有するべく、設計者がこのようなページをそれらが共通の目的を有することを示す方法としてグループ化することを可能にし得る。このようなグループ化の場合に、デスティネーションシステムは、システムが各ページの優先順位を知るように設計者がルールと共にリストを並べ替える能力を有することになり、最後の1つはデフォルトである。
【0318】
シート作成のゲーミフィケーション-ソフトウェア
本明細書で説明される場合のシートを用いる複雑なソフトウェアの構築は、他の手段よ
りも非技術系の人々にとってはるかに簡単である。それでもなお、webifierシステムおよび/またはAdd-On(プラグイン)は、例示的な実施形態によれば、アチーブメントと考えることができる設計者側の種々のアクションまたはアクションのグループを待ち得る。これらのアクションが種々の基準を満たす場合、それらがアチーブメントに至ったことを示すべく設計者に視覚ポップアップが手短に表示され得る(
図15)。ポップアップは、“Your web-app is now ready to receive new records”または“You are done making your first web-app report”などの設計者が今作成したものの値をリレーし得る。基準は、設計者がこれらのアクションをとった最初の2回のうちの1回だけ、過去数か月の間に設計者がそのようなアクションを完了していない、訪問者が設計者のアクションに関係したデスティネーションページも訪問した、そのようなステップが時間を測られた前回よりも短い時間でユーザがいくつかのアクションを完了した、またはユーザが何かを達成するための異なるワークフローまたは異なる方法を試したなどの複数の基準を含むことができる。アクションは、デスティネーションシステムのまたはAdd-Onのユーザインターフェースとの対話、または設計者が作成するデスティネーションページに関連する訪問者の対話を含み得るだけでなく、設計者のスプレッドシートの分析にも基づき得る。例えば、ゲーミフィケーションシステムは、設計者が伝統的なスプレッドシートテーブルを作成したかどうか、設計者がテンプレートシート上の伝統的な条件付き書式設定を用いたかどうか、またはさらには、設計者が“=SUM(A1:A10)”のような式における基本集計関数を用いたかどうかを見てよい。
【0319】
設計者は、それらのユーザアカウントに関連するポイント、またはこれらのアチーブメントに基づいて増分されるいくつかのタイプのポイントを有し得る。時間の経過に伴う十分なポイントの蓄積は、設計者がデスティネーションシステムまたはAdd-On内の新しい特徴を利用することを可能にし得る。種々のアクションまたはレベルのポイントは、デスティネーションシステムのまたはAdd-Onのユーザインターフェースが“advanced mode”に変更されることをトリガし得る。これは、さらなる制御の追加、ヒントラベルの除去、ドロップダウンではなく検証を有するテキストボックスなどのより複雑なもののための制御の変更、またはより迅速なシート-ソフトウェア開発が可能となるように設計者に提示されることになるページの順序およびボタンの場所の変更によるそのワークフローの変更を含み得る。或るポイントレベルへの到達はまた、例えば、匿名であるかまたは作成したユーザアカウントを有するかのいずれかの大勢の訪問者が、設計者により作成されたデスティネーションページにアクセスすることを可能にするべく、webifierの使用を取り巻くライセンスパーミッションルールを変更し得る。
【0320】
通知
例示的な実施形態によれば、デスティネーションシステムにおいて、通知ルールはファシリティを提供し、それにより、或るイベントの発生は、指定のアクションをトリガすることができる(
図83)。レギュラーユーザは、自分用の通知を設定することができる。管理者または設計者ユーザは、自分と自分の管理ドメイン内のユーザ用の通知を設定することができる。複数のイベントを取り扱うおよび/または複数のアクションを行うために、ユーザは、複数の通知を設定し得る。各通知ルールのセットアップは、通知をトリガするべきイベントについての詳細および通知がトリガされるときに行われるべきアクションについての詳細をユーザが指定することを必要とする(
図84)。通知ルールは、また有効にする必要があるときにまた設定を入力する必要がないようにすべてのその他の詳細を保った状態で無効にすることができる。
【0321】
スプレッドシートツールAdd-On/プラグインの完全に内部での動作に基づいて、イベントがサーバに伝えられるときに通知をトリガすることができ、またはウェブブラウザが、サーバに送信される通知要求をトリガすることもできるが、アクション自体がサー
バに伝えられるまたは持続されるまではできないかもしれない。イベントの例は、データがページに挿入されるとき、ページ上のデータが編集されるとき、ページの構成が変更されるとき、およびappの構成が変更されるときを含む。明確にするために、イベントの例は、訪問者が高レベルのイベントをトリガした(Insertページのサブミットボタンを押した)、設計者による高レベルのイベント(新しいページを作成した)、セルのイベントをトリガした(セルを変更した)、領域のイベントをトリガした(セルのグループ内の少なくとも1つのセルを変更した)、シートのイベントをトリガした、のカテゴリ内とすることができ、直接的(セルの式を変更した)または間接的(セルの式自体は変更されていないにもかかわらずセルの式の結果が変更された)の両方とすることができる。このようなアクションが起こるとき、アクションは、該アクションに対応するドメインイベントを生じ得る。
【0322】
通知のために用いられ得る同じドメインイベントはまた、ロギングファシリティの基礎として役立ち得る。管理者は、シートデータ、ページ構成、またはapp構成、および拒否されたアクセスなどのイベントに関するすべてのCRUD(作成する、読み出し、更新する、削除する)動作などの、人々がそれについて通知されることに関心を持っているよりも多くのイベントをログすることを選んでよい。これらのログは、ソートされ、フィルタされ、または統計解析のために用いられ得る。デスティネーションシステムは、これらのイベントを取り扱う通知サービスを含む。
【0323】
Webifierサービスは、その設定が、発生したアクションおよびアクションが行われた特定のページまたはappと一致するイベントのタイプによりそれらがトリガされるべきであると指定する現在有効にされるものに通知ルールのリストをフィルタし得る。各このような通知ルールに関して、デスティネーションシステムは、ルールにより指定されるアクションを実行する。可能なアクションは、さらに後述するように、電子メールアクションおよびwebhookアクションを含む(1つの通知ルールは、1つよりも多いアクションを指定し得る)。
【0324】
電子メールアクションを実行するために、デスティネーションシステムは、該ルールに関して電子メールが送信されるべきであるかどうかを最初に決定し得る。電子メールが送信されるべきでない場合、残りの電子メールアクションステップを進めない。電子メールが送信されるべきである場合、システムは、電子メールメッセージの種々の部分(件名、ボディなど)を構築するのにルールにより指定されるテンプレートを用い、イベントについての情報を、存在し得る任意の対応するプレースホルダへ置き換える。イベントがデスティネーションページを指定し、且つルールが電子メールと共にページのPDFコピーが送信されるべきであると指定する場合、これは、関連するページのPDFコピーを生成し、これを電子メールメッセージへの添付として追加し得る。代替的に、デスティネーションページhtmlは、該ページが収容する任意の挿入フォームまたは編集フォームを含む電子メールに埋め込まれ得る。HTMLは、ページナビゲーションメニューの除去、背景画像の除去、JavaScript参照の除去、または日付を選択するためのポップアップのカレンダーではなく標準テキストボックスを用いるなどの特化されたものではなく入力フィールドに関するより標準の簡易化された制御を用いるなどの、HTML対応電子メールクライアント内のその閲覧を考慮に入れるために、修正を有してもまたは有さなくてよい。埋め込みフォームのサブミットは、結果的に、デスティネーションシステムへのhttp post要求を生じることになる。post要求のURLは、電子メールに埋め込まずにレンダリングされるときの同じデスティネーションページとは異なっていてよく、認証トークンがフォームおよびhttp postに埋め込まれるためログインは要求されない異なるユーザ認証、またはより予測できないフリーフォーム入力である入力制御を考慮に入れ得る異なるデータ検証ルールをトリガしてよい。webifierは、次いで、ルールにリストされた電子メール受信者にメッセージを送信する。
【0325】
電子メールの内容は、電子メールテンプレートフォームで指定することができ、これは、件名ライン、リッチテキストテンプレートのWYSIWYG編集、HTML非対応の電子メールシステムに関するフォールバック、複数の受信者(ccおよびbccを含む)、reply-to、および添付オプションを含む(
図85)。代替的に、市販の電子メールテンプレーティングモジュールが用いられ得る。加えて、電子メールの内容自体は、シートテンプレートを用いて指定することもでき、この場合、デスティネーションシステムは、それがデスティネーションページに関してするようにHTMLフォーマットで出力することになるが、HTML非対応の電子メールクライアントのためにフォールバックの簡易化されたテキストのみのフォーマットでも出力することになる。
【0326】
Webhookアクションを実行するために、デスティネーションシステムは、最初にそのルールに関してwebhookが呼び出されるべきであるかどうかを決定し得る。呼び出されるべきでない場合、残りのwebhookアクションステップを進めない。呼び出されるべきである場合、POST要求のボディで送信されるイベントについての情報と共に、HTTP POST要求を、ルールにより指定されるwebhook URLへ送信する。Webhook情報は、JSONフォーマットであり得るがこれに限定されない。
【0327】
すべての通知動作は、キューに入れられてよく、アクションをトリガしたイベントを実行することができるように非同期的に処理されてよく、これをトリガしたユーザは、電子メールまたはwebhookアクションが失敗するまたは完了するのに長時間かかる場合であっても、システム上で他の機能を行うことに進むことができる。それらは非同期であるため、通知はまた、バッチ処理のために格納することができる(例えば、ユーザは、通知の連続ストリームではなく、すべてのイベントの日単位のまたは週単位のダイジェストを受信することを好み得る)。
【0328】
手順アクション
通知イベントに対する(例えば、とりわけ上記のボタンおよび通知に関する)潜在的なアクションは、(レコードシート、テンプレートシート、仮想シート、一過性シート、構成シート、およびwebifier内のすべての他の種類のシートなどの)任意の種類のシート上のセル上の値を挿入し、削除し、かつ設定する手順アクションを含み得る。これらの手順アクションの具体的な内容は、“=IF(A1=100,SetValues(A1:A2,B1:B2,false)”のように他の従来の式関数内にネストされた“=SetValues(ソース、デスティネーション、パラメータ)」のように従来の宣言スプレッドシート式に類似する構文、および/または“dest=source”のように手順プログラミングに共通する構文で宣言され得る。ソースおよび/またはデスティネーションは、シート全体、名前付き範囲を含むシート範囲、他のシートデータを参照する式、またはその挿入ページ制御によって影響を受けるであろう基礎をなすセルを参照するのと同じ効果を有するであろう挿入ページ上の制御への参照の組み合わせであってもよい。ソースの場合は、1、“hello”、または1+1などの静的値であってもよい。デスティネーションが範囲である間、ソースが静的値である場合、静的値は、デスティネーション範囲内の各セルに対して設定され得る。値を挿入する場合、手順関数SetValuesへのパラメータは、既存の値を上書きするか、既存の値を挿入してシフトダウンするか、左に挿入してシフトするかなどを指定し得る。手順関数DeleteValuesは、削除してシフトアップするか、削除して左にシフトするか、空のままにするかなどを指定し得る。パラメータはまた、ソースセル内の任意の式が値に分解されるべきであるか、値としてコピーと呼ばれてよいか、またはデスティネーションコピーが、式によってコピーと呼ばれてよいソースセルの式定義を保持するべきであるかどうかを指定してもよい。
【0329】
通知イベントに対する潜在的なアクションはまた、C#などの手順プログラミング言語、および/または様々な共通またはカスタムスクリプト言語を用いて、スプレッドシートユーザに慣れたVBAスクリプト構文を使用して設計者によって指定され得る、ルーピングまたは複雑な条件などのより複雑な手順を含む。例えば、設計者は、VentureCapitalという名前のシートの挿入イベントに以下のコードを関連付けることができる。“for(int x=0;x<10;x++){SetValues(Offset(DepartmentSizes!A1,x,0),Offset(DepartmentSizes!A1,x,0)*2,SetValueParams.Overwrite|SetValueParams.CopyByValues);}”新しいベンチャーキャピタルレコードが挿入されるにつれて、関連するアクションは、A1~A10における部門規模の値を2倍にし、セルのいずれかがもともと式を有する場合、それらは代わりにその後の単純な数値を有するであろう。webifierは、スクリプトの実行時間を制限し、利用可能な特徴または機能を制限し、スクリプトロジックを可能にするシステムに典型的な他のセキュリティ対策を講じ得る。webifierは、デスティネーションシステム上でのみスクリプトを実行することができ、Excel Add-On内のスクリプトの実行を回避し、かつ/または排除することができる。webifierは、シートのメタデータにアクセスする、ページオプションのようなオフシートwebifierデータを修正する、ウェブHTTPS要求を送信する、API呼び出しを実行する、SQLクエリを実行するためにSQLデータベースに接続する、かつ/また(例えば、ExecEvent(guid)などのスクリプト機能を実行することによって)は電子メールを送信するなどの他のwebifier通知イベントアクションをトリガするなどのいくつかの機能を許可し得る。これらの手順アクションを伴うシートの変更は、かかる変更に以前に関連付けられたイベントに起因して間接的に付加的な通知をトリガする可能性がある。
【0330】
通知イベントのための潜在的な他のトリガは、深夜もしくはcron式の形態で設計者によって指定されたインターバルなどの日付または時間のロールオーバー、または式“=ButtonEvent(buttonLabelText,wait or queque)”を有するセル内でボタンが定義されるボタンクリックが含まれ、待機またはキューは、ボタンをクリックする訪問者に関連付けられたイベントがすべての実行を完了するのを待たせるべきか、またはイベントが待機されるべきであり、訪問者がその間にwebifierを使用し続けることを許可されるべきかどうかをデスティネーションシステムに指定する。通知イベントリストは、“Button Labelled Reset at FirstSheet!A1”などに見いだされるセル配置によって、どの特定のボタンが参照されるかを一意に識別する。
【0331】
不変性
Webifierのユーザは、スプレッドシート式を使用していくつかのデータが宣言されるが、最初に作成された後にデータが変更されない、または将来のある時点でフリーズされるアプリを構築することを望み得るが、これは総称して不変性と呼ばれ得る。
【0332】
不変性は、既に説明されているwebifierの手順能力によって達成され得る。例えば、設計者は、インボイス行レコードシートInvRecordsおよび関連するインボイス挿入テンプレートおよび詳細報告テンプレートを作成し得る。行レコードシートは、税金および総計算などの計算式から構成されるいくつかの列を有し得、課税式は、静的6%に設定されるGlobelVariablesと名付けられた第2のシート上の単一の値を参照し得る。すべての履歴インボイスの税金および合計を変更することなく、税率が4%に更新されることを可能にするために、設計者は、“SetValues(InvRecords,SetValueParams.CopyByValues|SetV
alueParams.Overwrite)”または簡略化された同等の“FreezeValues(InvRecords)”でスクリプトを実行する挿入ページ実行によってトリガされる通知イベント設定を有し得る。結果として、いずれかのインボイスが挿入されるたびに、いずれかのテンプレート上で直接見ることができなかった、または編集可能でなかった式を有するセルを含む、過去のインボイスからのすべての式が、CopyByValuesパラメータによる静的値に分解されることになる。
【0333】
レコードのスプレッドシート表現と、ユーザインターフェース・テンプレートを使用したレコードの入力と、手順書のシート変更能力を備えたイベントモデルを組み合わせることで、webifierをかなりの数の追加シナリオで有効に使用することができ、これらの部分の合計よりも大きな柔軟性を備え、より少ない別個のワークフローと機能が必要となる。それにもかかわらず、webifierは、ページを挿入するか、または編集する上で「値を不変にする」ページオプションを使用して不変性を指定する代替の方法を提供し得、これは、訪問者がそのページを使用してデータを提出した後にすべての式を静的値に分解するであろう。
【0334】
モバイル考慮事項
デスティネーションシステムは、例示的な実施形態によれば、好ましくはすべてのデバイスプラットフォームに応答性があり、十分に適合し、HTMLおよびファイル伝送などのいくつかの標準ブラウザ特徴と統合される。デスティネーションシステムはまた、デスティネーションシステム内に含まれるデータがネイティブなapp経験でユーザによりアクセスされるように、デスティネーションシステムへの標準web-service APIアクセス方法を通じてネイティブappへ直接統合され得る。このような方法でのデータの提示は、ネイティブSDK環境または他の開発フレームワーク、例えば、Android Studio、Apple Xcode、Xamarin、またはCordovaでの付加的なコーディングを通じてデスティネーションシステムにより有効にされる。
【0335】
さらに、デスティネーションシステムは、機能にアクセスするおよびデータを表示するためのウェブビューの使用を通じてモバイルデバイスと統合され得る。これは、app内のデスティネーションページ全体にアクセスすることができ、または、データのより小さいセグメントを表示するまたは特異的な機能にアクセスするのに用いることができる。
【0336】
デスティネーションシステムは、他のページ上のデスティネーションシステム要素の包含のすべてを可能にする十分に対話型のモジュールおよび他のコードフラグメント(スクリプト化またはコンパイルされ得る)を実行し得る。例えば、デスティネーションシステムは、第三者によりホストされるウェブサイト上にページタイプのいずれかを表示するためにHTMLインラインフレーム要素をサポートし得る。
【0337】
デスティネーションシステムはまた、同じモバイルデバイス上で実行されてよいまたはされなくてよいクラウドベースのファイルストレージappからのファイルのアップロードが受け入れられるモードで動作し得る。この伝送は、ダイレクトファイルアクセスによりまたはインターネットアクセス可能APIを通じて達成され得る。
【0338】
本明細書の全体を通して説明はウェブページおよびブラウザを指すが、それらは、上記のようにブラウザの代わりになるモバイルエンドポイントの場合には大きくは変わらない。例示的な変更は、第1に、ページまたはこれをモバイルプラットフォームにとって一貫したものにするいくつかのユーザインターフェース要素と一緒に合わされる多くのピースを得る多くの要求のための概ねブラウザとしてこれが行われるかどうかに関係なく、ウェブブラウザとかなり類似した様態で動作するように設計および構築されるappをモバイルデバイス上にインストールさせることとして要約され得る。第2の変更として、デステ
ィネーションシステムサーバは、あるケースでは、ソフトウェア開発産業に典型的な数多くのフォーマットおよび方法のうちの1つを用いて、結果として生じるデスティネーションページに関するCSSおよびHTMLではなく異なる出力フォーマットを生成し得る。最後に、モバイルappは、HTMLメニューとは対照的に、モバイルプラットフォームにとって特異的および一貫しているページのメニューなどのいくつかのハードコード化されたユーザインターフェース要素を有し得る。このようなハードコード化されたユーザインターフェース要素は、データリストをフェッチするためのweb-service API呼び出しと、これらのデータリストを処理するためのモバイルapp内のハードコード化されたユーザインターフェースコードとの組み合わせであり得る。
【0339】
フローレイアウトへの自動変換
携帯電話などの多くのデバイスは、多種多様な解像度の小さな画面を持っている。現代のフローベースレイアウトは、このような場合にユーザ経験を向上させることができる。webifierは、訪問者がブラウザ、ネイティブモバイルアプリケーション、またはその他の方法を使用しているかにかかわらず、訪問者の経験および/または画面スペースの使用を最適化するために、テンプレートシートをフローレイアウトに完全にまたは部分的に変換するために様々な方法を使用し得る。
【0340】
テンプレートに基づいてページを生成する際に、webifierは、フローレイアウトに変換する方法を決定するために、テンプレートフォーマット、テンプレートコンテンツ、テンプレート使用量、テンプレートのデータソースのコンテンツ、データソース使用量、およびデータソースに関連付けられた他のテンプレートを分析し得る。フローレイアウトへの変換は、特定の行をラッピングするセル、間隔への修正、視覚グループ化を支援するための境界線または背景色などのフォーマットの追加、および/またはセルの幅への修正などのレイアウトへの最適な修正を識別することを含み得る。webifierは、以下に記載されるものなどのいくつかの要因を分析し、それらの使用を様々な方法で組み合わせて、レイアウトへの修正を決定し得る。例えば、webifierは、各ファクタをそのファクタの重要性の静的値によって重み付けし得、最も重要なファクタは、最も重要な修正を決定し、各修正に有利なファクタの数をカウントし、各修正に有利なファクタの重み付けされた合計を行うか、またはその領域の当業者に容易に明らかになるいくつかの他のアプローチを行う。
【0341】
Webifierは、それらの間に空の列を有さない2つのセルの間ではなく、空のセル上でラッピングすることに対して親和性を有し得る。この場合、単語ラッピングとほとんど同様に、通常、新しいテキストラインにラッピングするときに、ラインの末尾に空白をレンダリングすることをスキップし、空のセルがレンダリングされない可能性がある。webifierは、すべてまたはほとんどの行に対して、完全に空の列上のラッピングに対してより大きな親和性を有し得る。テンプレートの行がラッピングされるとき、webifierは、その行の前または後の垂直間隔を増加させてもよく、それにより訪問者は、レンダリングされた行のグループを単一のテンプレート行として、またはテンプレート行が単一のレコードを表す場合、単一のレコードとしてより容易に識別することができる。次いで、webifierはまた、一貫性を提供するために、すべての他のテンプレート行間の垂直スペースを増大させ得る。代替的に、webifierは、例えば、完全に空であるラッピングされたテンプレート行の周りに第1の低いか、または高いテンプレート行を配置することによって、垂直セクションを識別し得、そのセクション内のテンプレート行間の垂直スペースのみを増大させ得、特に多くのセクションを有するテンプレートにおいて、スペースを明確にするための一貫性と効率的に使用するためのバランスを可能にする。webifierは、テンプレートコンテンツおよびフォーマットを分析するとともに、いくつかの行が非常に類似していることを決定し得、それを垂直セクションとして識別し得、さらに、そのセクション内のすべての行に対して同じ列上にラッピングす
るための親和性を有し得る。webifierは、垂直セクションまたは水平セクションを識別するために境界を分析し得る。例えば、境界が3つの水平に隣接するセルの周りにある場合、webifierは、それらのセル間をラッピングしないことに対して親和性を有し得、かつそれらのセルの前後の垂直スペースを増大させ得る。webifierは、テンプレート行が第1の列から始まる1つまたは複数の空のセルを左に有すると決定し得、その行にコンテンツを有する第1のセルが画面の左端に近づいてレンダリングされるように、それらの空のセルをスキップし得る。webifierは、いくつかの行が垂直セクション内にあり、コンテンツの左側に異なる数の空のセルを有していると決定し得、そのセクション内のすべての行について同じ数の空のセルを左側にスキップし得る。
【0342】
Webifierは、レコードシートなどのデータソースのメタデータを分析して、フローレイアウトへの自動変換を支援し得る。例えば、テンプレートが2つのセルおよび1つのセル参照レコードシート列Aを有する場合、第2のセル参照レコードシート列Bは“=A *2”等の式を有し、一方、第3のセルはAおよびBのいずれに対する式参照も有さないレコードシート列Cを参照し、webifierは、第1のセルおよび第2のセルが視覚的によりグループ化されるように、第2のセルと第3のセルとの間でブレイクする親和性を有し得る。
【0343】
Webifierは、テンプレートのデータソースが、フローレイアウトをレンダリングする最適な方法を決定するために分析され得る付加的な情報を有する第2のテンプレートによって使用されることを決定し得る。例えば、ReportInvoiceテンプレートは、“InvoiceRecords”のデータソースを有してもよく、これは、“InsertInvoice”挿入テンプレートによっても使用される。webifierは、InsertInvoiceが、InvoiceRecordの列Dおよび列Lデータを参照するセルの周りにいくつかの空の行および境界を有すると決定し得る。レンダリング中のReportInvoiceに、同じInvoiceRecordsの列DおよびLを参照するセルが密接に関連していることを示す境界線や空の行などの表示がない場合でも、webifierはそれらの間をラッピングしたり、その他の方法でそれらを視覚的にグループ化したりしないことに親和性を有し得る。webifierは、境界と同じように、周囲のセルと比較して異なる背景またはテキストカラーを有するセルの領域を処理し得る。
【0344】
関係性の定義
いくつかの要求の多い使用シナリオでは、設計者は、レコードシートにおけるレコードの一次セット、並びに、各一次レコードに関する別のシートにおける1つまたは多くの“secondary records”を有することを望む場合があり、設計者は、例示的な実施形態によれば、レコードの一次セットの、伝統的なデータベースソフトウェアセンスのような“primary key”によって二次レコードを一次レコードに属するものとして識別することを意図する。手短に言えば、設計者は、一次レコードデータだけでなく二次レコードデータもポピュレートされるテンプレートシートを有するようにするために、レコードセット間で表される関係性を有することを意図し得る。例えば、1つのレコードシートは、列“company ID”および“company name”を有してよく、1つの行は、値に関する“1”および“Pleasant Solutions”を有する。第2のレコードシートは、列“company ID”および“specialization”を有してよく、1つの行は、“1”および“Software
Development Consultants”を有する。例示的な実施形態によれば、設計者が、“Pleasant Solutions”と“Software Development Consultants”との両方の記載を作成するテンプレートシートに基づいて詳細ページを表示することを望む場合、webifierシステムは、このような使用をサポートする。
【0345】
例えば、デスティネーションシステムは、Advancedモードまたはセクションにおいて、一次および二次レコードセットとしてのそれらの一次キーの関係性を示すべく、設計者が1つのシート上の列または行および別のシート上の別の列または行を選択することを要求することもできる。代替的に、この関係性の指定は、構成シートで行うこともできる。その後、デスティネーションシステムは、設計者がソース入力制御において1つの範囲またはシートだけでなくそれらのリストも指定することを可能にし得る、またはデスティネーションシステムは、指定される第1の範囲またはシートおよびこれを二次シートに結びつける一次キーの関係性に基づいて自動的に暗示される付加的な入力を有することができる。テンプレートシート内からレコードデータを参照するためのどこか別の場所で説明される方法は、その点で適用可能であり得る。設計者は、レコードシートのいずれかへのセルの式参照を用いてよく、該式参照をパーシングすることにより、それが設計者がそこからデータを取得することを意図していた一次または二次レコードセットのいずれであったかが明らかとなるであろう。二次レコードセットから参照されるデータをポピュレートするデスティネーションシステムは、一次レコードセットからポピュレートするのと同じ様態で行われることになる。
【0346】
“APP TEMPLATES”のライブラリ
例示的な実施形態によれば、ページのリストおよびそれらの共有パーミッションなどのデスティネーションシステムからの付加的な情報を有するまたは有さない、あらかじめ設計されたおよび/またはあらかじめ構成されたスプレッドシート定義を含むApp Templates全体を、設計者の所有するweb-appの開始点としてコピーするおよび使用するべく設計者のコミュニティから他の設計者ユーザへ利用可能であり得る(
図22)。これらは、別々にリストすることもでき、app内のページタイプ、レコードシート上の列の名前、任意のセルの内容からのキーワード、存在する日付フィールドなどのセルフォーマット、並びに、どんな設計者が該App Template web-appを用いているかまたはどんな産業に設計者の雇用主が属しているかの関連性に基づく、目的、カテゴリ、産業、またはスマートサーチによりサーチ可能である。
【0347】
スマートサーチはまた、2人の設計者をより類似しているとして関連付けるべく、同じ他の設計者からどの他のAppテンプレートが用いられているかをチェックすることもできる。代替的に、デスティネーションシステムは、2人の設計者の類似性レベルを判定するべく、セルの内容からのキーワードの存在または上記のサーチパラメータのいずれかに基づいて、1人の設計者に関する複数のスプレッドシート定義の組を別の設計者に関するものと比較することもできる。サーチは、次いで、上記のファクタ、ファクタの発生頻度、およびファクタの重要性のうちの1つまたは複数に基づいてサーチ結果を並べ替えることもできる。システムは、次いで、ユーザのサーチ経験を最適化するための一般的な商業的に公知の技術および市販のライブラリを利用することもできる。
【0348】
ADD-ONのインテグレーションおよび通信
スプレッドシートツール内のプラグインまたはAdd-Onは、クライアント-サーバアプリケーションモデルに関するソフトウェア開発産業に典型的な多くの方法で、デスティネーションシステムサーバと通信し、そのユーザインターフェースを表示し得る。例えば、図のいくつかは、デスティネーションシステムが主としてHTMLインターフェース、伝統的なウェブページを取得するためにweb-service API呼び出しを用いるAdd-Onの結果を例示し、例示的には、埋め込みブラウザウィンドウのように動作するフレームにおけるウェブページを示す。これは、Add-Onのユーザインターフェース要素の多くが再使用され、インストールされたAdd-Onを有さない設計者に関するデスティネーションシステムの管理ページ上のそれらのそれぞれのカウンターパートと概ね一致することを可能にする。セルの範囲を選択するのにマウスを用いる能力などの
Add-On内のいくつかの機能は、設計者が範囲をタイピングすることに限定するために制限、除去、または変更されてよく、または代替的に、デスティネーションシステム管理ページを有する埋め込みスプレッドシートツール上で行われ得る。簡略のため、Add-Onユーザインターフェースまたはデスティネーションシステム管理ページを表す添付図は、添付されていない場合であっても、それらのそれぞれのカウンターパートを有するとみなされるべきである。
【0349】
スプレッドシートツールへのAdd-Onのインテグレーションは、プラグインが統合されるスプレッドシートツールに応じて変化し得る。例えば、Excelとのインテグレーションは、ExcelのCOM Interopライブラリ(開発者用ドキュメントがhttps://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel(v=office.15).aspxで公開されている)またはJavaScript API for Office(開発者用ドキュメントがhttps://dev.office.com/docs/add-ins/develop/understanding-the-javascript-api-for-officeで公開されている)を用いて行われ得る。Google Sheetsなどのクラウドベースのスプレッドシートツールが、“spreadsheets.get(ranges, includeGridData)”を用いるシート範囲の取得などの容易にアクセス可能な理解できるweb-service API機能を有するGoogle Sheets API(開発者用ドキュメントがhttps://developers.google.com/sheets/で公開されている)などのウェブサービスを用いて統合され得る。
【0350】
スプレッドシートツールのインテグレーション・ファシリティにより許されるならば、システムは、ページの追加などのアイテムに関係したアクションを行う意図を示すユーザの修正したプロセスを可能にするべくセルまたはシートタブなどの領域に関する右クリックメニューに統合することができる。例えば、ページの追加を選び、次いで、ソースを指定することの代わりに、ユーザは、セルのグループ上で右クリックし、“add page”を選択することもでき、それにより、追加ページ画面は意図されるソースを既に知っていることになり、ユーザにその情報を促す必要はない(
図14)。
【0351】
付加的な設計者ナビゲーション
Webifierは、多数のシートで動作し得、多くの種類のシートに同時に作用し得るため、シートの付加的な整理およびナビゲーションは、設計者にとって有益であり得る。webifierは、埋め込まれたスプレッドシートツールを有するデスティネーションシステムを有し得、また、外部スプレッドシートツールと統合されたAdd-Onも有し得る。以下の態様は、いずれかと同様に適用され得る。
【0352】
スプレッドシートツールは、通常、各タブがワークブック内の単一のシートを表す単一のタブ列を有する。webifierは、例えば、それぞれがグループ化されたオートゲンシート、仮想シート、および/または設計者構築シートと共に、それらの種類によって自動的にタブをグループ化し得、仮想テンプレートシートおよび仮想レコードシート、またはユーザによって修正されないオートゲンレコードシートおよびユーザによって修正されたオートゲンレコードシートなどのサブタイプに基づいてグループ化し得る。webifierは、進行中のグループ化を支援するために、シートが最初にどのように作成されたかを示す各シートのメタデータを記録し得る。シートの変更は、ユーザが“autogen record sheets unmodified by the user”グループ内のシートを修正するなどの、あるグループから別のグループへのタブの移動をもたらし得る。タブのグループ化は、グループ名だけが表示される慣れたメニュースタイルで行うことができるが、グループ名をクリックすると、サブグループのリストやシート
のリストが表示される。webifierは、それが表すシートまたはグループの種類に基づいて、自動的にカラーコードおよび/またはその他の方法でタブの外観を変更し得る。
【0353】
設計者がセルに式を入力する過程にあるとき、スプレッドシートツールは、典型的には、範囲定義をタイプするのではなくセルをクリックすることによってセルの範囲をユーザが選択することを可能にし、ツールは、ユーザが別のシートのタブをクリックし、そのシートから1つまたは複数のセルを選択し、選択された範囲が式に自動的にタイプされるように入力されるセル式テキストに焦点を保持することを可能にし得る。同様に、webifierは、タブならびにグループおよびサブグループを、焦点を失うことなくクリックすることを可能にし得る。グループまたはサブグループ内の特定のシートがクリックされ、そのシートが可視になると、webifierはまた、シートのタブを一時的に移動するか、または複製して、グループと並んでタブのトップレベルにあることができる。webifierは、ユーザが別のシートを選択した後にシートのトップレベルタブを戻すか、または削除してもよいか、または最近使用されたタブとして、トップレベルとして表示される最近のタブの数の制限に達するまでタブを保持してもよく、そのとき、最近最も使用されていないトップレベルタブは削除されるであろう。
【0354】
典型的には、設計者に利用可能にすることができるが、まだアクセスされていない可能性がある多数の潜在的なオートゲンおよび/または仮想シートが存在する。例えば、基礎として選択されるセルの各異なる領域について異なる仮想行レコードシートを作成することができる。このような場合、グループ下の1つのタブは動的であり得、それがどのセル領域に基づいているかなど、どのシートが意図されているかについて設計者から付加的な情報を要求するダイアログをもたらし得る。選択されると、そのシートは再びダイアログに入力を提供する必要なく、最近アクセスされた仮想シートとして直接表示され、設計者が式をタイプする過程にある場合、焦点は保持され、設計者は式編集が継続されていることをツールに指示することなく、シートから領域を選択するように進むことができる。
【0355】
スプレッドシートツールとのタイト・インテグレーション
Webifierは、スプレッドシートツールとは別個のアプリケーションである必要はなく、外部アプリケーションにアクセス可能にされた手段を介するスプレッドシートツールとの通信に限定される必要はない。webifierは、代わりに、タイトな関係性を有してよく、それにより、これは、スプレッドシートツールとのより深いおよび/またはよりバックエンドベースのインテグレーションおよび通信チャネルを有し得る。これはまた、本明細書で「タイト・インテグレーション」と称され得る。
【0356】
いくつかの実施形態によれば、スプレッドシートツールは、デスティネーションシステムサーバのページ内に埋め込まれる、設計者がデスティネーションシステムの管理ページを訪問するときに伝統的なスプレッドシートツールの任意のよく知られた様態でスプレッドシート定義を編集することを可能にするスプレッドシート制御を有する、ウェブベースのスプレッドシートシステムであり得る。代替的に、逆が可能であり、それにより、webifierは、クラウドのスプレッドシートツールのウェブインターフェース内に埋め込まれる制御であり得る。いずれのケースにおいても、設計者に提示されるユーザインターフェースは、制限されたインテグレーションポイントを可能にする別個のアプリケーションであるスプレッドシートツールよりも、設計者のためにより一層タイトに統合されるおよび合理化されることが可能である。例えば、ブラウザでのナビゲーティングは、スプレッドシートとデスティネーションシステムURLとの両方の統一された歴史を有することになり、メニューは、スプレッドシートツールのメニューリンクとデスティネーションシステムのメニューリンクとの両方が、アプリケーション境界によって部分的に分離されるのではなく、論理グループにグループ化されるように編成され得る。
【0357】
上記のようにユーザインターフェースがよりタイトに統合されるように実装されるか否かに関係なく、スプレッドシートツールとwebifierとの間のデータ転送、同期、および他のバックエンドプロセスは、同様にタイト・インテグレーションを有してもまたは有さなくてもよい。例えば、web-service API呼び出しではなく、webifierは、web-service API呼び出しの部分的または完全置換として、スプレッドシートツールのDLLライブラリへの関数呼び出しを用い得る、または逆に、スプレッドシートツールは、webifierのDLLライブラリへの共通の関数呼び出しを用い得る。これは、webifierの性能の利点を提供し得るとともに、共有メモリアクセス、ミューテックスおよびセマフォなどの低レベルコーディネーションオブジェクト、共有ファイルへのアクセス、基礎をなすデータベースへの共有アクセス、およびDLLライブラリの共用などの当業者に公知のさらなるプログラミング技術を利用するためのインテグレーションを可能にする。このような融通性は、例えば、2つのコンポーネント間のリアルタイムの変更通知に有利であり、2つのコンポーネントは、webifierと、スプレッドシートツールを指す。
【0358】
代替的に、タイト・インテグレーションは、webifierがウェブベースのスプレッドシートツールの基礎をなすデータベース・データによりダイレクトにアクセスすることを可能にし得る、または逆に、ウェブベースのスプレッドシートツールがwebifierの基礎をなすデータベース・データによりダイレクトにアクセスすること、1つのコンポーネントのデータベーステーブルから別のコンポーネントのデータベーステーブルへ参照されるデータベース外部キーなどにより各コンポーネントのデータが他のディレクトリのデータを参照することを可能にするように特異的に設計された設計スキーマと完全に共有されるデータベースを有すること、または他のコンポーネントからのデータを含む列Cと同じデータベーステーブル上の列における1つのコンポーネントに関するデータを有することを可能にする。ダイレクトアクセスは、顕著な性能の利点を提供し得るおよび実装の複雑さを低減し得る。例えば、タイト・インテグレーションは、デスティネーションページのレコードデータが変更されたかどうかを単一のSQLクエリが確認することを可能にし得る、この場合クエリはデータベース内で効率よく評価される。このようなクエリの例は、デスティネーションページのソースデータの定義に関係するデータベーステーブルを、変更されたスプレッドシート内の特異的なセルの変更ログを有するデータベーステーブルに結合することを含み得る。このデータベースレベルでのタイト・インテグレーションなしでは、webifierシステムは、例えば、スプレッドシートツールのweb-service APIから大量のセルデータをフェッチしたかもしれず、それにより、ウェブベースのスプレッドシートツールがそのデータベースからデータをフェッチし、これをwebifierデータベースからフェッチすることにより前に得られたセルデータと比較し、変更されたセルのリストを、該ページへのセル参照を利用するデスティネーションページのすべてにマップバックすることになったかもしれない。
【0359】
加えて、webifierとスプレッドシートツールがスプレッドシート定義に共通のスキーマで通信するのではなく、タイト・インテグレーションは、データベース・データに関する全く異なるスキーマを用い得る、この場合、スキーマは、一方または両方のコンポーネントにとって処理がより効率的である。例えば、典型的なスプレッドシート定義は、シートにより編成されたXMLデータを有し、該シートに関するすべてのセルは、各シートの定義内でネストされ、書式設定および式および値などの種々のセル属性は、各セルのXML定義内でネストされ得る。データベースレベルでのタイト・インテグレーションによれば、例は、非XMLであり、列“sheetId”、“rowId”、“columnId”、および“cellContents”を有するデータベーステーブルなどの、ネストされるのではなく正規化されるデータベースレコードを有し、この場合、IDは他のデータベーステーブルを指す。さらに、データベーススキーマは、一緒にグループ化
されたセルの内容を有する必要さえもない。セルの内容は、代わりに、1つのデータベーステーブルがセル書式設定のすべてを有し、異なるデータベーステーブルがセルの式を有し、第3のデータベーステーブルが、評価された式からのセルのキャッシュ値を有するように分割されてよい。さらに、データベーススキーマは、ユニークIDおよび式により簡単に定義される“units”のリストを有する1つまたは複数のデータベーステーブルを有し得るので、セルは、行および列に編成される必要はないかもしれず、スキーマはまた、データがよく知られたスプレッドシートとして設計者に提示されることになるまたは設計者がスプレッドシートフォームにおいてデータと一時的に対話しているときなどの選択的状況で、ユニットが行および列としてマップバックされることを可能にする別個の1つまたは複数のテーブルを有し得る。
【0360】
タイト・インテグレーションはまた、デスティネーションシステムおよびスプレッドシートツールが、同じ単一サーバまたはサーバのグループ上に常駐するだけでなく、分散クラウドコンピューティングプロセスの最も効果的な使用を協調することも可能にし得る。例えば、増加した負荷に対応するべく付加的な分散サーバがスピンアップされる必要がある場合、付加的なサーバは、特定のweb-appに関係するすべての設計者および訪問者要求をデリゲートしてよく、該特定のweb-appに関するすべてのデータと共に両方のコンポーネントのインスタンスを提供されてよい。web-app境界にわたるこのようなデリゲーションは、他のサーバへの最小限の伝送が必要とされる状態で、付加的なサーバがweb-appに関して効率的なユニットのままであることを可能にすることになる。対照的に、タイト・インテグレーションなしでは、これは、web-appおよび関連するwebifierインスタンスをホストする特定のサーバが同じサーバであるまたはさらには同じweb-appに関するスプレッドシートツールをホストするサーバに地理的に近いことを保証するべくより複雑となり、したがって、コンポーネント間の通信は、より複雑であるかまたはあまり効率的ではない。
【0361】
全体として、タイト・インテグレーションによれば、スプレッドシートツールとwebifierは、別個のアプリケーションである必要はなく、双方の間の通信は、スプレッドシート定義の形態である必要もAPIを通じる必要もなく、データのストレージは、スプレッドシート定義の形態である必要はないが、設計者はそれでもなおレコードおよび/またはUIテンプレートを、それらがユーザインターフェースにスプレッドシートフォームで表される状態で操作することができ、訪問者は、スプレッドシートフォームにおけるものではなく依然としてデスティネーションページからのデータと対話することができる。
【0362】
図3Bは、前述のタイト・インテグレーションを用いる例示的なソフトウェア・アーキテクチャを示す。
図3Bでは、組み合わされたタイトシステム450は、スプレッドシートツール論理452とWebifier論理453を備え、両方とも共通のメモリ451を共有し、その両方とも、通信機構410、共有されたライブラリなどと統合される。
【0363】
図3Bによりさらに例示されるように、設計者は、ブラウザ454を用いて、1つまたは複数のワークシートへのレコードシートおよびテンプレートシートの変更を作成しまたは行い、データの変更が、部分的スプレッドシート定義を有するhttp post要求としてまたは変更イベントとしてタイトシステムのスプレッドシート論理452に転送され得る401a。スプレッドシート論理452は、設計者の変更を格納する402前にデータを代替の“Efficient Format”に変換し得る、または、データを、ネイティブなスプレッドシートフォーマットで格納し得る。設計者は、同じまたは異なるブラウザ455を用いてデスティネーションページ構成への変更を作成しまたは行い、これは、http post要求としてWebifier論理コントローラ453に転送され401b、その後、メモリ451に格納される402。
【0364】
デスティネーションページを提供するための訪問者のブラウザ456からWebifier論理453へのhttp get要求403bに応答して、Webifier論理453は、メモリ451から必要なデータを取得する404。Webifier論理は、テンプレートシートからの値および書式設定を評価および参照し、且つテンプレートシートに基づいて識別されるレコードシートからの値を評価および参照することにより、データをhtmlデスティネーションページへ変換し得る。デスティネーションページは、訪問者のブラウザ456に送信され得る405b。
図3Bが例示するように、テンプレートシートでのみ見受けられ、レコードシートでは見受けられないテキストラベル、RecordSheet!A1から生じるテキストラベル、RecordSheet!C2の評価からの“100”の値、およびRecordSheet、チェックボックスに関するRecordSheet!A2、およびテキストボックスに関するRecordSheet!B2からの値を有するテンプレートシートにより定義されるHTML入力制御を有するページを訪問者は閲覧する。
図3Bはさらに、訪問者がブラウザ456においてチェックボックスをチェックし、サブミットし、結果的にブラウザがhttp post要求406bをWebifier論理コントローラ454に送信できることを例示する。Webifier論理453は、post要求を処理し、メモリ451を新しいデータで更新し、随意的に効率的なフォーマットまたはシステムが用いるどんなフォーマットも格納する。設計者のブラウザ454が依然としてアクティブなセッションを有する場合、スプレッドシート論理コントローラ452は、メモリ451からまたは代替的に統合された通信機構410を通じて、更新されたデータ408を取得し、データを、1つまたは複数のスプレッドシート定義、または設計者ブラウザ454に提示されるスプレッドシート定義を更新するのに十分な変更イベントへ変換し、設計者のワークシートがセルA2に“true”を表示するように、それらを設計者のブラウザ409に送信する409。
【0365】
図3Bによりさらに例示されるように、モバイルアプリケーション上で実行する訪問者のモバイルデバイス457からのweb-service API呼び出し403m(例えば、ブラウザとは対照的に)は、http get要求403bに置き換え得る。このケースでは、Webifier論理453は、モバイルアプリケーションに、web-service API呼び出しへの応答を潜在的にXMLフォーマットで送信し得る405m、これは、訪問者のためのインターフェースを生成するべく、デバイスまたはオペレーティングシステムに特異的な設計情報と共にモバイルアプリケーションにより処理される。この例でのように、モバイルデバイス457のデスティネーションページのレンダリングは、異なるレイアウト、異なる制御タイプ、および/またはいくつかのレコードデータの欠如を有するという点で訪問者ブラウザ456のデスティネーションページのレンダリングとは異なり得る。
図3Bは、同じくテキストボックス値をtrueに変更し、モバイルデバイス457上のサブミットをクリックし、結果的にモバイルアプリケーションがweb-service API呼び出し406mをWebifier論理コントローラ453に送信する、訪問者の能力を例示する。Webifier論理453は、web-serviceにより受信されたデータを処理し、メモリ451を新しいデータで更新する。残りのステップは、訪問者ブラウザから結果的に生じるステップと同様であり得る。
図3Bにより例示されるように、デスティネーションページは、モバイルアプリケーションを実行する訪問者のモバイルデバイス457に送信され得る405m(例えば、ブラウザとは対照的に)、またはモバイルデバイス上で実行するブラウザにサーブされ得るが、モバイルデバイスの1つまたは複数の特徴の外観(例えば、画面サイズ、ハードウェア機能など)に基づいてデスティネーションページを変更する。
【0366】
他の特徴
システムは、“list item template”と同じテンプレートシートの方法を用いることができる。例えば、“List”のページタイプを作成することもでき
、この場合、入力および出力は、ユーザがその詳細を閲覧するのに行を選択することを必要とすること以外は、“details”ページタイプと同一となり、すべての行レコードは、リストフォームにおいて次々に表示されることになり、リスト上の各レコードは、アイテムテンプレートに従って表示される。レコードごとに情報のいくつかの行が必要とされるが、全詳細ページを保証するのに十分ではない場合、または詳細ページへの繰返しのナビゲーティングは望ましくないため、これは、例えば、行レコードリストが訪問者に表示されることを可能にする。
【0367】
インターフェースの全体を通して、デスティネーションページが訪問者にどのように見えることになるかを描画するサムネイルが設計者に提示され得る。サムネイルは、ユーザインターフェースにおいてインラインであり得る(例えば、
図28に示すように)および/または画面の一部の上に浮かび上がるポップアップまたは特異的な制御(例えば、
図11に示すように)として描画され得る。本明細書に含まれる図面の多くに例示されるように(少なくとも
図28および
図11を含む)、サムネイルは、図面の描画されたスプレッドシート定義からのデスティネーションページの結果を描画し得る。
【0368】
いくつかの態様によれば、ページタイプは、或る時間内に指定される自動リフレッシュオプションを有することができ、これは、クライアントアプリケーションまたはブラウザに、デスティネーションページを訪問者に関して周期的に、自動的にリフレッシュさせることになる(
図48)。代替的に、通知およびロギングのための同じ手法を、ページまたはページの一部が新しい情報を有し、通知が、クライアントにページを更新するのに必要な情報を提供することになるか、またはクライアントが、ページをリフレッシュするべく新しい要求を送信することになる、通知オープンクライアントセッションを押すのに用いることができる。いずれの手法の使用も、閲覧者の対話なしに新しい情報が常に可視であるように、ウェブページを訪問し、要求をリフレッシュする能力を有することができる、ブラウザにより動力を与えられるものなどの無人ウォールダッシュボードの使用シナリオの利点を有し得る。
【0369】
いくつかの態様によれば、デスティネーションシステムのパーミッションシステムはまた、訪問者パーミッションまたはページパーミッションだけでなく、設計者パーミッションを制限するルールを有し得る。設計者パーミッションは、appごとの、シートごとの、またはページごとの粒度レベルを有する読出し専用、読出しおよび共有、または読出しおよび共有および更新などのアクセスタイプを含み得る(
図21)。例えば、app ExampleApp上の読出し専用パーミッションは、設計者がExampleApp内で用いられる任意のシートに関するスプレッドシート定義を修正することを可能にせず、ExampleApp内のページに関するページ構成への変更を可能にしないが、設計者がスプレッドシート定義並びにそれらの基礎をなす式および設定を見ることを可能にすることになる。
【0370】
いくつかの態様によれば、デスティネーションシステムは、多くのスプレッドシートツールが行うように、1つまたは複数のセルに指定のURLへのクリック可能なハイパーリンクを作成する、セル書式設定をサポートすることができる。これは、URLを指定するセルテキスト上の属性を用いて行うことができ、URLの存在は、下線および青色などの他の書式設定の変更を示し得る。
【0371】
webifierは、ページ上のセキュリティパーミッションと同様に、設計者がデータシートおよび/または領域のリストを提供し、それらにセキュリティパーミッションを指定することを可能にし得る。次いで、webifierは、ページごとのセキュリティに加えて、これらのルールをセキュリティの第2のレイヤーとして使用し得る。次いで、webifierは、それらのページに対する要求が基礎となるデータへのアクセスを禁
止する結果になる場合、ページ全体またはページの一部へのアクセスをブロックし得る。webifierは、アクセス違反を記録し、かつ/または管理者または設計者に通知を送信し得る。
【0372】
Webifierは、ネストされたテンプレートが第2の程度までネストされていることを検出し得る。webifierは、最も深くネストされたテンプレートが埋め込まれるように指定された領域をクリックすると、その最も深くネストされたテンプレートのためのポップアップが生じるように、ポップアップ内に任意のそのような第2の程度ネストされたテンプレートを表示し得る。例えば、インボイステンプレートがInvoiceアイテムのネストされたテンプレートを有し、Invoiceアイテムテンプレートが、そのインボイスアイテムの過去の購入の履歴のより深くネストされたテンプレートを有し、これは、履歴テンプレートインボイスアイテムテンプレートに割り当てられたスペースに表示することが不可能であり得る場合、webifierは、インボイスアイテムの一部をクリックするとポップアップ履歴が引き上げられるインボイスアイテムを有するインボイスページを自動的に表示し得る。深くネストされた入力フォーマットの同様の例が適用され、ここで最も深くネストされたテンプレートは、ポップアップを利用して第2の程度の入力詳細を提供し得る。
【0373】
先に述べたように、webifierは、設計者が、他の設計者がアプリを修正するための様々な粒度のパーミッションを指定することを可能にし得る。webifierはまた、設計者が、訪問者が入力および編集中に式を提供することができ、式がただ数学的であるかどうか、数式を使用して同じページ上で編集するために利用可能な他のセルを参照することができるか、またはそれらの編集可能または同じページ上で見えるセル以外のセルを参照することができるかに関する、様々な粒度のパーミッションを指定し、制約を特定することを可能にし得る。このようにして、webifierは、訪問者が制約されたサブ設計者であることを可能にし得る。
【0374】
例示的なユースケースのシナリオ
例示的なユースケースによれば、設計者は、webifier Add-Onが既にインストールされている、Windowsデスクトップバージョンのスプレッドシートアプリケーション、例えば、MICROSOFT EXCELを開き得る。Add-Onは、スプレッドシートアプリケーションに埋め込まれたメインAdd-Onユーザインターフェースとして“Sidebar”を含み得る。設計者は、ログインすることを要求され得る(
図13)。ログインの成功は、設計者を、以前に作成したweb-appのリストを有する
図12へ連れていく。設計者は、スプレッドシートアプリケーションにより利用可能な普通の方法で新しいスプレッドシートファイルを作成し、次いで、
図12で見られるようにアップロード矢印(サーバへのアップロード)をクリックし得る。設計者は、appの名前を設定し(
図23)、ほぼ空のスプレッドシート(この例では)がサーバに送信され、ほぼ空のweb-appとなる。設計者は、次に、
図18上のページの空リストを見て、
図69のメニューを見るべくweb-appアクションメニュー上をクリックする、または
図55のメニューを見るべくweb-app タブのアクションメニュー上をクリックする。ユーザは、該メニューからの追加ページをクリックし、
図51のようなフォームへ進み、これは、ページ“Title”などのすべてのページタイプに共通のプロパティを表示してよく、また、所望のデスティネーションページタイプを選ぶべくドロップダウンを表示してよい。設計者は、次に、設計者のページタイプの選択に応じて、
図26の(API)、27(Calendar)、29(Container)、33(CSV
Import)、35(Details Report)、38(Edit-Cells)、41(Edit-Record)、43(Insert)、45(Link)、46(PDF)、47(Report)、49(Tabs Container)に似ていてよい、ページタイプ設定および構成を定義することを要求する主としてブランクのフォ
ームを見ることになる。設計者は、それぞれ本明細書で説明される1つまたは複数の特徴を組み込んでいるページを必要なだけ作成するべくこのプロセスを繰り返し得る。
【0375】
前述のどの特徴も、本発明の任意の特定の態様または実施形態と共に用いられ得る。上記の態様および実施形態の特徴の多くの組み合わせ、修正、または変更が、当業者にはすぐに分かるであろうし、それらは本発明の一部をなすことを意図されている。一実施形態または例に関係して具体的に説明した特徴のいずれも、あらゆる他の実施形態または例で用いられ得る。加えて、主題が、構造上の特色および/または方法論的行為に特異的な言語で説明されているが、付属の請求項で定義される主題は、前述の具体的な特徴または行為に必ずしも限定されないことが理解される。例えば、具体的なソフトウェアアプリケーション、式、および関数名の使用は、請求項がこのような特異性を列挙しない限り、用いることができる代替的なアプリケーション、式、および/または関数名を限定するものとなることを意図されない。むしろ、前述の具体的な特徴および行為は、請求項を実装する例示的なフォームとして開示される。