(57)【要約】本明細書で説明される態様は、複雑なカスタムのソフトウェアアプリケーションを作成するために、ローカルのスプレッドシートアプリケーション、ウェブ、および／またはクラウドベースのスプレッドシートソリューションと共に用いられ得る。スプレッドシート自体は、カスタムのまたは複雑なソフトウェアアプリケーションを構築するためのプラットフォームツールとして用いられるようになるための概念的枠組みが欠けている。ローコード／ノーコード技術を用いる本明細書で説明される方法およびシステムを用いると、設計者は、ソフトウェアアプリケーションの基礎をなす青写真として１つまたは複数のスプレッドシートを用いてカスタムのおよび／または複雑なソフトウェアアプリケーションを作成することができる。結果として得られるソフトウェアアプリケーションは、静的／読出し専用であり得る、または、ユーザが、例えば、１つまたは複数のオンラインウェブページを介してまたはモバイルアプリケーションを介して、アプリケーションデータを動的に追加する、削除する、編集する、または他の方法で修正することを可能にするべく、対話型であり得る。データ転送は、青写真のスプレッドシートと結果として得られるソフトウェアアプリケーションとの間で一方向または双方向であってよく、これにより、修正されたデータがソフトウェアアプリケーションからスプレッドシートフォームへ返送されることを可能にする。【選択図】図３Ａ
2021505998.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の少なくとも１つの一次データソースを決定することであって、前記少なくとも１つの一次データソースが、前記スプレッドシートの第１のワークシートに対応する、前記決定することと、
前記スプレッドシート内の少なくとも１つの二次データソースを決定することであって、前記少なくとも１つの二次データソースが、前記スプレッドシートの異なる第２のワークシートに対応する、前記決定することと、
前記一次データソースのレコードと前記二次データソースのレコードとの間の関係を決定することと、
前記決定された関係に基づいて、前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部を備える第３のワークシートを自動的に生成することであって、前記第３のワークシートのコンテンツは、前記第１のワークシートのコンテンツおよび前記第２のワークシートのコンテンツと同期される、生成することと、
特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートに基づいて前記対話型ウェブアプリケーションの前記特定のウェブページを生成することであって、前記特定のウェブページが、前記特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートに基づいて識別される前記第３のワークシートのレコードを参照する、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページに関連する入力制御を介してユーザ入力を受信することと、
前記受信したユーザ入力に基づき、かつ前記決定された関係に基づいて前記二次データソースの少なくとも１つのレコードを更新することと、を含む、方法。
【請求項２】
前記スプレッドシート内の第１のユーザインターフェース・テンプレートを決定することであって、前記第１のユーザインターフェース・テンプレートが、前記一次データソースおよび前記二次データソースを識別する、決定することをさらに含み、
前記第１のユーザインターフェース・テンプレートを決定することに応答して、前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部を備える、前記第３のワークシートを生成することが実行される、請求項１に記載のシステム。
【請求項３】
前記第３のワークシートが、前記一次データソースの前記レコードおよび前記二次データソースの前記レコードの間接的なビューを含む、請求項１に記載の方法。
【請求項４】
前記一次データソースまたは前記二次データソースの前記コンテンツが変更されたことを判定することに応答して、前記第３のワークシートの対応するコンテンツを更新することをさらに含む、請求項１に記載の方法。
【請求項５】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係の表示を含む第２のユーザ入力を受信することを含む、請求項１に記載の方法。
【請求項６】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記第１のワークシートおよび前記第２のワークシートの１つまたは複数の特徴に基づいて、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を自動的に検出することを含む、請求項１に記載の方法。
【請求項７】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記少なくとも１つのユーザインターフェース・テンプレートの１つまたは複数の特徴に基づいて、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を自動的に検出することを含む、請求項１に記載のシステム。
【請求項８】
前記スプレッドシートとは別個の、前記第１のワークシートおよび前記第２のワークシートからのデータレコードを備える、ウェブデータストアを生成することをさらに含み、
前記対話型ウェブアプリケーションの前記特定のウェブページを生成することが、前記ウェブデータストアから前記第３のワークシートの前記レコードに対応するコンテンツを抽出することを含み、
前記第３のワークシートの前記レコードに対応する前記コンテンツが、前記特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートによって識別され、かつフォーマットされる、請求項１に記載の方法。
【請求項９】
前記第３のワークシートの前記コンテンツが変更されたことを判定することに応答して、前記第１のワークシートまたは前記第２のワークシートの対応するコンテンツを更新することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記第３のワークシートの少なくとも１つの第１のレコードのフォーマットが変更されたことを判定することに応答して、前記第１のワークシートまたは前記第２のワークシートの対応する第２のレコードのフォーマットを更新することをさらに含む、請求項１に記載の方法。
【請求項１１】
前記第１のワークシートまたは前記第２のワークシートの少なくとも１つの第１のレコードのフォーマットが変更されたことを判定することに応答して、前記第３のワークシートの対応する第２のレコードのフォーマットを更新することをさらに含む、請求項１に記載の方法。
【請求項１２】
前記第３のワークシートを生成することが、自動的に生成されたシートの作成を要求する第２のユーザ入力を受信することに応答して実行される、請求項１に記載の方法。
【請求項１３】
前記決定された関係が、前記第１のデータソースの前記レコードと前記第２のデータソースの前記レコードとの間の１対１の関係または１対多の関係を示す、請求項１に記載の方法。
【請求項１４】
前記決定された関係が、前記第１のワークシートの第１の列が一次キーまたは外部キーとして機能することを示す、請求項１に記載の方法。
【請求項１５】
前記関係を決定することが、前記一次データソースの前記レコードおよび前記二次データソースの前記レコードのレコード構造に基づいている、請求項１に記載の方法。
【請求項１６】
前記関係を決定することが、前記第１のデータソースの前記レコードの第１の列および前記第２のデータソースの前記レコードの第２の列の共通のコンテンツに基づいている、請求項１に記載の方法。
【請求項１７】
前記関係を決定することが、前記スプレッドシートのセル内の少なくとも１つの式の少なくとも１つのパラメータに基づいている、請求項１に記載の方法。
【請求項１８】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
１つまたは複数の手がかりに基づいて、自動的に、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の潜在的な関係を決定することと、
前記決定された潜在的な関係の信頼性レベルを決定することと、
前記決定された信頼性レベルに基づいて前記決定された潜在的な関係を受け入れるか、または拒否することと、を含む、請求項１に記載の方法。
【請求項１９】
前記スプレッドシート内の少なくとも１つの三次データソースを決定することであって、前記少なくとも１つの三次データソースが、前記スプレッドシートの異なる第４のワークシートに対応する、決定することと、
前記一次データソースの前記レコードと前記三次データソースのレコードとの間の第２の関係を決定することと、
前記決定された第２の関係に基づいて、前記一次データソースの前記レコードの少なくとも一部および前記三次データソースの前記レコードの少なくとも一部を備える第５のワークシートを自動的に生成することであって、前記第５のワークシートのコンテンツが、前記第１のワークシートのコンテンツおよび前記第４のワークシートのコンテンツと同期される、生成することと、をさらに含む、請求項１に記載の方法。
【請求項２０】
前記スプレッドシート内の少なくとも１つの三次データソースを決定することであって、前記少なくとも１つの三次データソースが、前記スプレッドシートの異なる第４のワークシートに対応する、決定することと、
前記第３のワークシートの前記レコードと前記三次データソースのレコードとの間の第２の関係を決定することと、
前記決定された第２の関係に基づいて、前記第３のワークシートの前記レコードの少なくとも一部および前記三次データソースの前記レコードの少なくとも一部を備える第５のワークシートを自動的に生成することであって、前記第５のワークシートのコンテンツが、前記第１のワークシートのコンテンツ、前記第２のワークシートのコンテンツ、および前記第４のワークシートのコンテンツと同期される、生成することと、をさらに含む、請求項１に記載の方法。
【請求項２１】
第４のワークシートの少なくとも１つのセルが、前記自動的に生成された第３のワークシートの少なくとも１つのセルを参照する式を含む、請求項１に記載の方法。
【請求項２２】
前記式が、前記自動的に生成された第３のワークシートの複数のセルの値を集約する、請求項２１に記載の方法。
【請求項２３】
少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の少なくとも１つの一次データソースを決定することであって、前記少なくとも１つの一次データソースが第１のワークシートに対応する、決定することと、
少なくとも１つの二次データソースを決定することであって、前記少なくとも１つの二次データソースが異なる第２のワークシートに対応する、決定することと、
前記一次データソースのレコードのコンテンツおよび前記二次データソースのレコードのコンテンツに基づいて、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の関係を決定することと、
前記決定された関係に基づいて、前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部を備える第３のワークシートを自動的に生成することであって、前記第３のワークシートのコンテンツが、前記第１のワークシートのコンテンツおよび前記第２のワークシートのコンテンツと同期される、生成することと、
特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートに基づいて前記対話型ウェブアプリケーションの前記特定のウェブページを生成することであって、前記特定のウェブページが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートに基づいて識別される前記第３のワークシートのレコードを参照する、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページに関連する入力制御を介してユーザ入力を受信することと、
前記受信したユーザ入力に基づき、かつ前記決定された関係に基づいて、前記二次データソースの少なくとも１つのレコードを更新することと、を含む、方法。
【請求項２４】
第１のユーザインターフェース・テンプレートを決定することであって、前記第１のユーザインターフェース・テンプレートが、前記一次データソースおよび前記二次データソースを識別する、決定すること、をさらに含み、
前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部を備える前記第３のワークシートを生成することが前記第１のユーザインターフェース・テンプレートを決定することに応答して実行される、請求項２３に記載の方法。
【請求項２５】
前記第３のワークシートが、前記一次データソースの前記レコードおよび前記二次データソースの前記レコードの間接的なビューを含む、請求項２３に記載の方法。
【請求項２６】
前記一次データソースまたは前記二次データソースのコンテンツが変更されたことを判定することに応答して、前記第３のワークシートの対応するコンテンツを更新することをさらに含む、請求項２３に記載の方法。
【請求項２７】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係の表示を含む第２のユーザ入力を受信することとを含む、請求項２３に記載の方法。
【請求項２８】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記第１のワークシートおよび前記第２のワークシートの１つまたは複数の特徴に基づいて、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を自動的に検出することを含む、請求項２３に記載の方法。
【請求項２９】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記少なくとも１つのユーザインターフェース・テンプレートの１つまたは複数の特徴に基づいて、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を自動的に検出することとを含む、請求項２３に記載のシステム。
【請求項３０】
前記第３のワークシートとは別個の、前記第１のワークシートおよび前記第２のワークシートからのデータレコードを備える、ウェブデータストアを生成することをさらに含み、
前記対話型ウェブアプリケーションの前記特定のウェブページを生成することが、前記ウェブデータストアから前記第３のワークシートの前記レコードに対応するコンテンツを抽出することを含み、
前記第３のワークシートの前記レコードに対応する前記コンテンツが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートによって識別され、かつフォーマットされる、請求項２３に記載の方法。
【請求項３１】
前記第３のワークシートのコンテンツが変更されたことを判定することに応答して、前記第１のワークシートまたは前記第２のワークシートの対応するコンテンツを更新することをさらに含む、請求項２３に記載の方法。
【請求項３２】
前記第３のワークシートの少なくとも１つの第１のレコードのフォーマットが変更されたことを判定することに応答して、前記第１のワークシートまたは前記第２のワークシートの対応する第２のレコードのフォーマットを更新することをさらに含む、請求項２３に記載の方法。
【請求項３３】
前記第１のワークシートまたは前記第２のワークシートの少なくとも１つの第１のレコードのフォーマットが変更されたことを判定することに応答して、前記第３のワークシートの対応する第２のレコードのフォーマットを更新することをさらに含む、請求項２３に記載の方法。
【請求項３４】
前記第３のワークシートを生成することが、自動的に生成されたシートの作成を要求する第２のユーザ入力を受信することに応答して実行される、請求項２３に記載の方法。
【請求項３５】
前記決定された関係が、前記第１のデータソースの前記レコードと前記第２のデータソースの前記レコードとの間の１対１の関係または１対多の関係を示す、請求項２３に記載の方法。
【請求項３６】
前記決定された関係が、前記第１のワークシートの第１の列が一次キーまたは外部キーとして機能することを示す、請求項２３に記載の方法。
【請求項３７】
前記関係を決定することが、前記一次データソースの前記レコードおよび前記二次データソースの前記レコードのレコード構造に基づいている、請求項２４に記載の方法。
【請求項３８】
前記関係を決定することが、前記第１のデータソースの前記レコードの第１の列および前記第２のデータソースの前記レコードの第２の列の共通のコンテンツに基づいている、請求項２３に記載の方法。
【請求項３９】
前記関係を決定することが、前記スプレッドシートのセル内の少なくとも１つの式の少なくとも１つのパラメータに基づいている、請求項２３に記載の方法。
【請求項４０】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
１つまたは複数の手がかりに基づいて、自動的に、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の潜在的な関係を決定することと、
前記決定された潜在的な関係の信頼性レベルを決定することと、
前記決定された信頼性レベルに基づいて前記決定された潜在的な関係を受け入れるか、または拒否することと、を含む、請求項２３に記載の方法。
【請求項４１】
少なくとも１つの三次データソースを決定することであって、前記少なくとも１つの三次データソースが異なる第４のワークシートに対応する、決定することと、
前記一次データソースの前記レコードと前記三次データソースのレコードとの間の第２の関係を決定することと、
前記決定された第２の関係に基づいて、前記一次データソースの前記レコードの少なくとも一部および前記三次データソースの前記レコードの少なくとも一部を備える第５のワークシートを自動的に生成することであって、前記第５のワークシートのコンテンツが、前記第１のワークシートのコンテンツおよび前記第４のワークシートのコンテンツと同期される、生成することと、をさらに含む、請求項２３に記載の方法。
【請求項４２】
少なくとも１つの三次データソースを決定することであって、前記少なくとも１つの三次データソースが異なる第４のワークシートに対応する、決定することと、
前記第３のワークシートの前記レコードと前記三次データソースのレコードとの間の第２の関係を決定することと、
前記決定された第２の関係に基づいて、前記第３のワークシートの前記レコードの少なくとも一部および前記三次データソースの前記レコードの少なくとも一部を備える第５のワークシートを自動的に生成することであって、前記第５のワークシートのコンテンツが、前記第１のワークシートのコンテンツ、前記第２のワークシートのコンテンツ、および前記第４のワークシートのコンテンツと同期される、生成することと、をさらに含む、請求項２３に記載の方法。
【請求項４３】
第４のワークシートの少なくとも１つのセルが、前記自動的に生成された第３のワークシートの少なくとも１つのセルを参照する式を含む、請求項２３に記載の方法。
【請求項４４】
前記式が、前記自動的に生成された第３のワークシートの複数のセルの値を集約する、請求項４３に記載の方法。
【請求項４５】
少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の少なくとも１つの一次データソースを決定することであって、前記少なくとも１つの一次データソースが、前記スプレッドシート内の第１の複数のセルに対応する、決定することと、
前記スプレッドシート内の少なくとも１つの二次データソースを決定することであって、前記少なくとも１つの二次データソースが、前記スプレッドシート内の異なる第２の複数のセルに対応する、決定することと、
前記一次データソースの前記第１の複数のセルと前記二次データソースの前記第２の複数のセルとの間の関係を決定することと、
前記決定された関係に基づいて、前記スプレッドシート内にワークシートを自動的に生成し、前記一次データソースの前記第１の複数のセルの少なくとも一部および前記二次データソースの前記第２の複数のセルの少なくとも一部への仮想参照を備えることであって、前記ワークシートのセルへの変更は、前記第１の複数のセルおよび前記第２の複数のセルの対応するセルと同期される、備えることと、
特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートに基づいて前記対話型ウェブアプリケーションの前記特定のウェブページを生成することであって、前記特定のウェブページが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートに基づいて識別される前記ワークシートのセルを参照する、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページに関連する入力制御を介してユーザ入力を受信することであって、前記ユーザ入力が前記ワークシートの第１のセルへの変更を含む、受信することと、
前記受信したユーザ入力に基づいて、かつ、前記ワークシートの前記第１のセルに対応する第１の仮想参照を使用して、前記一次データソースまたは前記二次データソースの少なくとも１つの第２のセルを更新することと、を含む、方法。
【請求項４６】
前記スプレッドシート内の第１のユーザインターフェース・テンプレートを決定することであって、前記第１のユーザインターフェース・テンプレートが、前記一次データソースおよび前記二次データソースを識別する、決定すること、をさらに含み、
前記一次データソースの前記第１の複数のセルの少なくとも一部および前記二次データソースの前記第２の複数のセルの少なくとも一部への前記仮想参照を含む、前記ワークシートを生成することが、前記第１のユーザインターフェース・テンプレートを決定することに応答して実行される、請求項４５に記載の方法。
【請求項４７】
前記ワークシートが、前記一次データソースのレコードおよび前記二次データソースのレコードの間接的なビューを含む、請求項４５に記載の方法。
【請求項４８】
前記一次データソースまたは前記二次データソースのコンテンツが変更されたことを判定することに応答して、前記ワークシートの対応するコンテンツを更新することをさらに含む、請求項４５に記載の方法。
【請求項４９】
前記ワークシートが、前記一次データソースの前記第１の複数のセルおよび前記二次データソースの前記第２の複数のセルに関連するメタデータをさらに含む、請求項４５に記載の方法。
【請求項５０】
前記一次データソースの前記第１の複数のセルと前記二次データソースの前記第２の複数のセルとの間の前記関係を決定することが、
前記一次データソースの前記第１の複数のセルと前記二次データソースの前記第２の複数のセルとの間の前記関係の表示を含む第２のユーザ入力を受信することを含む、請求項４５に記載の方法。
【請求項５１】
前記一次データソースの前記第１の複数のセルと前記二次データソースの前記第２の複数のセルとの間の前記関係を決定することが、
前記第１の複数のセルおよび前記第２の複数のセルの１つまたは複数の特徴に基づいて、前記一次データソースの前記第１の複数のセルと前記二次データソースの前記第２の複数のセルとの間の前記関係を自動的に検出することを含む、請求項４５に記載の方法。
【請求項５２】
前記一次データソースの前記第１の複数のセルと前記二次データソースの前記第２の複数のセルとの間の前記関係を決定することが、
前記少なくとも１つのユーザインターフェース・テンプレートの１つまたは複数の特徴に基づいて、前記一次データソースの前記第１の複数のセルと前記二次データソースの前記第２の複数のセルとの間の前記関係を自動的に検出することを含む、請求項４５に記載の方法。
【請求項５３】
前記スプレッドシートとは別個の、前記ワークシートからのデータレコードを備える、ウェブデータストアを生成することをさらに含み、
前記対話型ウェブアプリケーションの前記特定のウェブページを生成することが、前記ウェブデータストアから前記ワークシートの前記レコードに対応するコンテンツを抽出することを含み、
前記ワークシートの前記レコードに対応する前記コンテンツが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートによって識別され、かつフォーマットされる、請求項４５に記載の方法。
【請求項５４】
前記ワークシートのコンテンツが変更されたことを判定することに応答して、前記第１の複数のセルまたは前記第２の複数のセルの対応するコンテンツを更新することをさらに含む、請求項４５に記載の方法。
【請求項５５】
少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の少なくとも１つの一次データソースを決定することであって、前記少なくとも１つの一次データソースが、前記スプレッドシートの第１のワークシートに対応し、かつ複数のセルを備える、決定することと、
複数の列または行を含む前記スプレッドシート内で第２のワークシートを自動的に生成することであって、前記複数の列または行の各々の行または列が、前記第１のワークシートの前記複数のセルのそれぞれのセルに対応し、前記それぞれのセルと関連付けられた変更を示すコンテンツを含む、生成することと、
特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートに基づいて前記対話型ウェブアプリケーションの前記特定のウェブページを生成することであって、前記特定のウェブページが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートに基づいて識別される前記第１のワークシートのレコードを参照する、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページに関連する入力制御を介してユーザ入力を受信することと、
前記受信したユーザ入力に基づいて前記第１のワークシートの少なくとも１つの第１のセルを更新することと、
前記少なくとも１つの第１のセルを更新することに基づいて、前記第２のワークシートの少なくとも１つの第１の列または行を更新することと、を含む、方法。
【請求項５６】
前記スプレッドシート内の第１のユーザインターフェース・テンプレートを決定することであって、前記第１のユーザインターフェース・テンプレートが前記一次データソースを識別する、決定すること、をさらに含み、
前記第２のワークシートを生成することが、前記第１のユーザインターフェース・テンプレートを決定することに応答して実行される、請求項５５に記載の方法。
【請求項５７】
前記スプレッドシート内の前記一次データソースのコンテンツが変更されたことを判定することに応答して、前記第２のワークシートの対応する列を更新することをさらに含む、請求項５５に記載の方法。
【請求項５８】
前記スプレッドシートとは別個の、前記第１のワークシートからのデータレコードを備える、ウェブデータストアを生成することをさらに含み、
前記対話型ウェブアプリケーションの前記特定のウェブページを生成することが、前記ウェブデータストアから前記第１のワークシートの前記レコードに対応するコンテンツを抽出することを含み、
前記第１のワークシートの前記レコードに対応する前記コンテンツが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートによって識別され、かつフォーマットされる、請求項５５に記載の方法。
【請求項５９】
前記第２のワークシートが、前記第２のワークシートの対応する行で変更が生じた時間を示す情報を有するタイムスタンプ列をさらに含み、
前記少なくとも１つの第１のセルを前記更新することに基づいて前記第２のワークシートの前記少なくとも１つの第１の列を更新することが、前記タイムスタンプ列の対応するセルを更新することをさらに含む、請求項５５に記載の方法。
【請求項６０】
少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の１つまたは複数のデータソースを決定することであって、前記データソースが各々１つまたは複数のレコードを備える、決定することと、
前記スプレッドシート内の、かつ前記対話型ウェブアプリケーションの特定のウェブページに対応する、少なくとも１つのユーザインターフェース・テンプレートを決定することであって、前記少なくとも１つのユーザインターフェース・テンプレートが、前記１つまたは複数のデータソースの第１のデータソースを参照し、前記第１のデータソースの少なくとも一部が一過性のスコープを有する、決定することと、
前記スプレッドシート内の前記１つまたは複数のデータソースからデータレコードを抽出することによって、ウェブデータストアを生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページの第１の提示に関する第１の要求に応答して、前記ウェブデータストアから取得された第１のデータを含み、かつ前記一過性のスコープに基づく前記第１のデータソースの第１のレコードに対応する、前記特定のウェブページの前記第１の提示を生成することであって、前記第１のデータが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートに従ってフォーマットされる、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページの第２の提示に関する第２の要求に応答して、前記ウェブデータストアから取得された第２のデータを含み、かつ前記一過性のスコープに基づく前記第１のデータソースの前記第１のレコードに対応する、前記特定のウェブページの前記第２の提示を生成することであって、前記第１のデータおよび第２のデータが、前記第１のデータソースの前記一過性のスコープに基づいて決定される異なるコンテンツを含む、生成することと、を含む、方法。
【請求項６１】
前記一過性のスコープがユーザごとのスコープを含む、請求項６０に記載の方法。
【請求項６２】
前記第１のデータが、第１のユーザに対応する情報を含み、
前記第２のデータが、異なる第２のユーザに対応する情報を含む、請求項６１に記載の方法。
【請求項６３】
前記ウェブデータストア内に、前記第１のデータおよび前記第１のデータが前記第１のユーザに関連付けられていることの表示を格納することと、
前記ウェブデータストア内に、前記第２のデータおよび前記第２のデータが前記第２のユーザに関連付けられていることの表示を格納することと、をさらに含む、請求項６２に記載の方法。
【請求項６４】
前記一過性のスコープがセッションごとのスコープを含む、請求項６０に記載の方法。
【請求項６５】
前記第１のデータが、前記第１の提示に関連する第１のブラウザセッションに対応する情報を含み、
前記第２のデータが、前記第２の提示に関連する異なる第２のブラウザセッションに対応する情報を含む、請求項６４に記載の方法。
【請求項６６】
前記一過性のスコープが周期的なスコープを含む、請求項６０に記載の方法。
【請求項６７】
前記第１のデータが、前記第１の提示に関連する第１の時間または日付に対応する情報を含み、
前記第２のデータが、前記第２の提示に関連する異なる時間または日付に対応する情報を含む、請求項６６に記載の方法。
【請求項６８】
前記第１のレコードに対応する前記第１のデータがリセットされるべきであることを示すユーザ入力を第１のユーザから受信することと、
前記ユーザ入力および前記第１のデータソースの前記一過性のスコープに基づいて前記第２のデータを決定することと、をさらに含む、請求項６０に記載の方法。
【請求項６９】
前記１つまたは複数のデータソースが、非一過性のスコープを有する第２のデータソースを含み、
前記少なくとも１つのユーザインターフェース・テンプレートが、前記第２のデータソースの第２のレコードを参照し、
前記特定のウェブページの前記第１の提示が、前記ウェブデータストアから取得され、かつ前記第２のデータソースの前記第２のレコードに対応する第３のデータを含み、
前記特定のウェブページの前記第２の提示が、前記ウェブデータストアから取得され、かつ前記第２のデータソースの前記第２のレコードに対応する第３のデータを含む、請求項６０に記載の方法。
【請求項７０】
前記第１のデータソースが、非一過性のスコープを有する第２のレコードを備え、
前記少なくとも１つのユーザインターフェース・テンプレートが前記第２のレコードを参照し、
前記特定のウェブページの前記第１の提示が、前記ウェブデータストアから取得され、かつ前記第２のレコードに対応する第３のデータを含み、
前記特定のウェブページの前記第２の提示が、前記ウェブデータストアから取得され、かつ前記第２のレコードに対応する第３のデータを含む、請求項６０に記載の方法。
【請求項７１】
前記スプレッドシートが、前記対話型ウェブアプリケーションの前記特定のウェブページを生成する際に使用される第１の式を含み、前記方法が、
前記特定のウェブページの前記第１の提示と関連して、第１の結果を生成するために前記第１のデータを使用して前記第１の式を評価することであって、前記第１の結果が前記特定のウェブページの前記第１の提示に含まれる、評価することと、
前記特定のウェブページの前記第２の提示と関連して、第２の結果を生成するために前記第２のデータを使用して前記第１の式を評価することであって、前記第２の結果が前記特定のウェブページの前記第２の提示に含まれる、評価することと、をさらに含む、請求項６０に記載の方法。
【請求項７２】
前記第１のデータが、前記第１の要求に含まれる前記一過性のスコープおよびコンテキスト情報に基づいて決定され、
前記第２のデータが、前記第２の要求に含まれる前記一過性のスコープおよびコンテキスト情報に基づいて決定される、請求項６０に記載の方法。
【請求項７３】
前記第１の要求がＵＲＬを含み、前記方法が、
前記ＵＲＬに基づいて、前記第１の要求に含まれる前記コンテキスト情報を識別することをさらに含む、請求項７２に記載の方法。
【請求項７４】
少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の１つまたは複数のデータソースを決定することであって、前記データソースがそれぞれ１つまたは複数のレコードを備える、決定することと、
前記１つまたは複数のデータソースの第１のデータソースの少なくとも１つの第１のセルが一過性のスコープを有することを示すユーザ入力を受信することと、
前記スプレッドシート内の前記１つまたは複数のデータソースからデータレコードを抽出することによって、ウェブデータストアを生成することと、
前記特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートに基づいて前記対話型ウェブアプリケーションの特定のウェブページを生成することであって、前記少なくとも１つのユーザインターフェース・テンプレートが、前記スプレッドシート内に定義され、かつ前記第１のデータソースの前記少なくとも１つの第１のセルを参照する、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページの第１の提示に関する第１の要求に応答して、前記ウェブデータストアから取得された第１のデータを含み、かつ前記一過性のスコープに基づく前記第１のデータソースの少なくとも１つの第１のセルに対応する、前記特定のウェブページの前記第１の提示を生成することであって、前記第１のデータが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートに従ってフォーマットされる、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページの第２の提示に関する第２の要求に応答して、前記ウェブデータストアから取得された第２のデータを含み、かつ前記一過性のスコープに基づく前記第１のデータソースの前記少なくとも１つのセルに対応する、前記特定のウェブページの前記第２の提示を生成することであって、前記第１のデータおよび第２のデータが、前記少なくとも１つの第１のセルの前記一過性のスコープに基づいて決定される異なるコンテンツを含む、生成することと、を含む、方法。
【請求項７５】
前記少なくとも１つの第１のセルが一過性のスコープを有することを示す前記ユーザ入力が、前記第１のデータソースのセルの範囲を示すユーザ入力を含む、請求項７４に記載の方法。
【請求項７６】
前記少なくとも１つの第１のセルが一過性のスコープを有することを示す前記ユーザ入力が、前記第１のデータソースの列または行を示すユーザ入力を含む、請求項７４に記載の方法。
【請求項７７】
前記少なくとも１つの第１のセルが一過性のスコープを有することを示す前記ユーザ入力が、
前記少なくとも１つの第１のセルが一過性のスコープを有し、
前記第１のデータソースの少なくとも１つの第２のセルが、非一過性のスコープを有する、ことを示すユーザ入力を含む、請求項７４に記載の方法。
【請求項７８】
前記少なくとも１つのユーザインターフェース・テンプレート内に、前記少なくとも１つの第１のセルが前記一過性のスコープを有することを示す情報を格納することをさらに含む、請求項７４に記載の方法。
【請求項７９】
前記第１のデータソース内に、前記少なくとも１つの第１のセルが前記一過性のスコープを有することを示す情報を格納することをさらに含む、請求項７４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許明細書の開示内容の一部には、著作権保護の対象物が含まれる。著作権者は、特許商標庁の特許ファイルまたは記録への掲載に伴う本特許明細書または特許開示の複写には異議を提起しないが、それ以外については、どのようなものであれ、すべての著作権を留保する。
関連出願への相互参照
【０００２】
本出願は、２０１７年１２月３日に出願された「Ｓｐｒｅａｄｓｈｅｅｅｔ−Ｂａｓｅｄ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｖｅｌｏｐｍｅｎｔ」という名称の米国出願第１５／８２９，９７９号の優先権を主張したＰＣＴ出願である。米国出願第１５／８２９，９７９号は、２０１６年１２月３日に出願された「Ｓｐｒｅａｄｓｈｅｅｅｔ−Ｂａｓｅｄ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｖｅｌｏｐｍｅｎｔ」という名称の米国仮出願第６２／４２９，７４９号に対する優先権を主張する「Ｓｐｒｅａｄｓｈｅｅｔ−Ｂａｓｅｄ  Ｓｏｆｔｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｖｅｌｏｐｍｅｎｔ」という名称の米国仮出願第１５／４５５，９０９号の一部継続出願である。
【０００３】
本明細書で説明される態様は、一般に、コンピュータおよびコンピュータネットワークのためのアプリケーションおよびソフトウェア開発に関する。より詳細には、本明細書で説明される態様は、特に、対話型ウェブアプリケーションなどのカスタムの複雑なソフトウェアのローコードおよびノーコードソフトウェア開発のためのシステムおよび方法を提供する。
【背景技術】
【０００４】
ソフトウェア開発は、難しい、時間のかかるプロセスとなることがある。専門のトレーニングおよび知識が一般に必要とされ、個人が複雑なおよび／またはカスタムのソフトウェアアプリケーションを開発することができるようになるまでにしばしば数年の経験が必要とされる。これらのスキルを持っていなければ、ソフトウェア開発をするのにしばしば多額の費用でソフトウェア開発者またはソフトウェア開発会社を利用しなければならない。加えて、ひとたびソフトウェア開発プロセスが始まれば、カスタムのおよび／または複雑なソフトウェアを開発するのに数週間、数か月、またはさらには数年かかることがある。
【０００５】
オンラインでまたはモバイルデバイスで用いられることになるカスタムのソフトウェアアプリケーションの開発は、一般に、Ｃ＃またはＪａｖａなどの高レベルプログラミング言語でのプログラミングを伴う。ソフトウェアアプリケーションが有する融通性と能力が高ければ高いほど、資金を供給するまたは構築する多くの編成のために、それはより多くの時間と法外な費用がかかるものになる。ソフトウェアアプリケーションの開発者がいくつかのクライアントの間で費用を分担するために構築済みのコンポーネントを用いるときでさえも、多くのプロジェクトは各編成の独自の要件に起因して依然として構築に時間がかかる。
【０００６】
あるケースでは、ソフトウェアアプリケーションは既製品で購入することができるが、その場合、編成は既製品の特徴に制限される。カスタマイゼーションは、オリジナルのソフトウェア開発がそうであるように、しばしば難しく、時間がかかる、および／または費用がかかる。
【０００７】
それらの信じられないほどパワフルなビジネス分析能力、記録保管能力および編成能力に基づいて、スプレッドシートは今やビジネスに広く普及している。スプレッドシートは、おそらくワードプロセッサを除いて、どのカテゴリのソフトウェアよりもビジネスで用いられている。しかしながら、スプレッドシート自体は、ソフトウェアアプリケーションを構築するためのプラットフォームツールとして用いられるようになるための概念的枠組みが欠けている。よくても、既存のスプレッドシートソフトウェアは、ユーザが１つまたは複数のカスタムの機能を行うためにプログラムコードを含めることを可能にし得る。しかしながら、該プログラムコードは、依然としてＶｉｓｕａｌ  Ｂａｓｉｃなどの高度な言語で書かれなければならず、これはまた、高度なプログラミングスキル、能力、およびリソースを必要とする。
【発明の概要】
【０００８】
以下に、本明細書で説明される種々の態様の簡略化された要約を提示する。この要約は、広範な概要ではなく、鍵となるまたは重要な要素を特定することまたは請求項の範囲を線引きすることを意図していない。以下の要約は、以下に提供されるより詳細な説明への序章としていくつかの概念を簡略化された形態で単に提示する。
【０００９】
スプレッドシートは、非技術系のユーザが計算およびレポートの印刷などのタスクを行うための普及したツールであって、独自の概念モデルである。スプレッドシートは、しばしば２つの方法で用いられる：各行がレコードであるテーブル、または各レコードを有することはシート全体またはファイル全体を備える。スプレッドシートおよびスプレッドシートアプリケーション自体は、ソフトウェアアプリケーションを構築するためのプラットフォームツールとして作用するための概念的枠組みが欠けているが、本明細書で説明される態様は、このようなシステムの基礎をなす青写真として１つまたは複数のスプレッドシートを用いて複雑な対話型ソフトウェアおよび／またはウェブアプリケーションを自動的に生成するように動作可能なツールおよび機能を含む。このようなツールおよび機能、または、本明細書で説明される１つまたは複数のツールおよび／または機能と共に構成される方法および／またはシステムは、ｗｅｂｉｆｉｅｒ、ｗｅｂｉｆｉｅｒシステム、ｗｅｂｉｆｉｅｒソフトウェアなどとも呼ばれ得る。
【００１０】
前述のような従来技術での制限を克服するために、および、本明細書を読んで理解すれば明白となるであろう他の制限を克服するために、本明細書で説明される１つまたは複数の態様は、スプレッドシートに含まれるデータおよび書式設定テンプレートに基づいて対話型ウェブアプリケーションの作成を容易にすることに向けられる。
【００１１】
本明細書で説明される第１の態様は、少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するための方法、システム、およびコンピュータ可読媒体を提供する。本明細書で説明される技術は、それぞれ１つまたは複数のデータレコードを有する１つまたは複数のデータソースを識別するべくスプレッドシートを分析することと、それぞれデータソースのうちの１つまたは複数に関するデータフォーマットを備える１つまたは複数のユーザインターフェース・テンプレートを識別するべくスプレッドシートを分析することを含み得る。スプレッドシートは、複数のワークシート（本明細書では単に「シート」とも呼ばれる）を備え、データソースは、第１のスプレッドシートの少なくとも一部を備え、一方、ユーザインターフェース・テンプレートは、第２のスプレッドシートの少なくとも一部を備え得る。ウェブデータストアは、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することに基づいて生成され得る。システムは、ウェブデータストアの抽出したデータレコードに基づいて、対話型ウェブアプリケーションの特定のウェブページを生成し、特定のウェブページは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされるデータレコードおよび／またはデータレコードへの参照を備え得る。システムは、ページに関する要求に応答して特定のウェブページの提示を生成し得る。さらに、システムは、ウェブアプリケーションを介してユーザ入力を受信することに応答してウェブデータストアを更新し得る。
【００１２】
ユーザインターフェース・テンプレートは、フォントフォーマット、セルサイズ、および／または任意の他の適切な表示書式設定などの対応するデータソースおよび／またはレコードに関するデータフォーマットを定義するおよび／または備え得る。いくつかの実施形態では、ユーザインターフェース・テンプレートは、データソースに関連する１つまたは複数のデータ制約を定義し得る。このようなデータ制約は、データソースからデータレコードを選択するのに用いられ得る。代替的におよび／または加えて、ユーザインターフェース・テンプレートは、データソースに関連する１つまたは複数の入力検証制御を定義し得る。システムは、ウェブデータストアを更新することの一部としてまたはそれに加えて入力検証制御と突き合せてユーザ入力を評価し得る。いくつかの態様によれば、１つまたは複数のユーザインターフェース・テンプレートは、１つまたは複数のデータソースとは別個のワークシートに格納され得る。他の態様では、１つまたは複数のユーザインターフェース・テンプレートは、１つまたは複数のデータソースと同じワークシートに格納され得る。
【００１３】
いくつかの態様によれば、システムは、スプレッドシートにおける少なくとも１つのデータフォーマットおよび／またはデータレコードへの１つまたは複数の変更を識別することに基づいて対話型ウェブアプリケーションを更新し得る。ユーザインターフェース・テンプレートにおけるデータフォーマットへの変更は、ウェブデータストアに影響を及ぼさずに対話型ウェブアプリケーションにおいて実装され得る。データレコードの内容への変更は、対話型ウェブアプリケーションのページに自動的に反映され得る。システムは、スプレッドシートにおけるデータレコードおよび／またはデータフォーマットになされた変更を自動的に検出および／または分析するように動作し得る。いくつかの態様によれば、システムは、ウェブデータストアになされた更新に基づいて、基礎をなすスプレッドシートを更新し得る。加えて、かつ／または代替的に、システムは、スプレッドシートにおけるデータレコードになされた変更に基づいてウェブデータストアを更新し得る。同様に、システムは、スプレッドシートのユーザインターフェース・テンプレートにおけるデータフォーマットになされた変更に基づいて対話型ウェブアプリケーションを更新し得る。
【００１４】
いくつかの態様によれば、システムは、ウェブデータストアおよび／またはスプレッドシートに格納されたデータを閲覧するおよび／または修正するユーザの能力を制限するべくパーミッション制御を実装し得る。ユーザに関するセキュリティパーミッションは、１つまたは複数のユーザインターフェース・テンプレートなどのスプレッドシートにおいて定義され得る。セキュリティパーミッションは、スプレッドシートに関連するスプレッドシートアプリケーションのネイティブな式を用いて定義され得る。加えて、かつ／または代替的に、セキュリティパーミッションは、管理ポリシーサーバなどのスプレッドシート以外のソースから取得され得る。システムは、第１のセキュリティパーミッションを有する第１のユーザによるウェブデータストアの修正を防止し得る。システムは、第２のセキュリティパーミッションを有する第２のユーザから受信した入力に応答してウェブデータストアの修正を可能にし得る。
【００１５】
スプレッドシートは、スプレッドシートアプリケーションソフトウェアを用いて生成され得る。例えば、いくつかの実施形態では、スプレッドシートは、ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬを用いて生成され得る。スプレッドシートは、任意の従来のスプレッドシートのデータフォーマットに準拠するデータファイルおよび／またはファイルのコレクションを備え得る。例えば、スプレッドシートは、ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬで用いられるＸＬＳＸ、ＭＳ−ＸＬＳ、および／またはＭＳ−ＸＬＳＢバイナリデータフォーマットに準拠し得る。いくつかの実施形態では、生成されたウェブデータストアは、スプレッドシートを備え得る、または逆もまた同様である。
【００１６】
いくつかの態様によれば、対話型ウェブアプリケーションは、データレコードおよび／またはユーザインターフェース・テンプレートに基づいて入力ウェブページおよび／または出力ウェブページを生成し得る。いくつかの実施形態では、システムは、１つまたは複数のユーザインターフェース・テンプレートにおいて識別されるデータソースに基づいてウェブ入力フォームを生成し、ウェブ入力フォームを介して１つまたは複数のレコードを修正するべくユーザ入力を受信し得る。システムは、第１のユーザインターフェース・テンプレートに基づいてウェブデータストアからデータを出力するためのデータ出力ウェブページを生成し、第２のユーザインターフェース・テンプレートに基づいてウェブデータストアにおけるデータを編集するのに使用可能なデータ編集ウェブページを生成し得る。いくつかの実施形態では、特定のウェブページを生成することは、特定のウェブページに関連するクライアントデバイス特徴に対応するユーザインターフェース・テンプレートを選択することを含み得る。
【００１７】
別の態様または実施形態によれば、ｗｅｂｉｆｉｅｒシステムは、それぞれゼロまたはそれ以上のデータレコードを有する、スプレッドシート（単数または複数）内の１つまたは複数のデータソースを決定することと、データソースは、スプレッドシートの第１の部分を備え；それぞれデータソースのうちの１つまたは複数に関するデータフォーマットを備える、スプレッドシート内からの１つまたは複数のユーザインターフェース・テンプレートを決定することと、ユーザインターフェース・テンプレートは、スプレッドシートの第２の部分を備え；スプレッドシート内で識別されるデータソースからのデータレコードを備えるウェブデータストアを生成することと；特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに基づいて対話型ウェブアプリケーションの特定のウェブページを生成することと、特定のウェブページは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに基づいて識別される１つまたは複数のデータソースを参照し；対話型ウェブアプリケーションの特定のウェブページの提示に関する要求に応答して、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされる１つまたは複数のデータレコードを含む特定のウェブページの提示を生成することと；スプレッドシートに基づいて生成された対話型ウェブアプリケーションのウェブページを介してユーザ入力を受信することに応答してウェブデータストアを更新することと；により、少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するように構成され得る。
【００１８】
いくつかの態様において、以下の任意の組み合わせがｗｅｂｉｆｉｅｒシステム内にまたはｗｅｂｉｆｉｅｒシステムにより含まれ得る：スプレッドシートに基づいて生成された対話型ウェブアプリケーションのウェブページは特定のウェブページである；スプレッドシートは複数のワークシートを備え、スプレッドシートの第１の部分は、スプレッドシートの第２の部分とは異なるワークシート上にある；スプレッドシートは複数のワークシートを備え、１つまたは複数のユーザインターフェース・テンプレートは、１つまたは複数のデータソースと同じワークシートに格納される；ユーザインターフェース・テンプレートの少なくとも１つのデータフォーマットは、対応するデータソースのフォントフォーマットを含む；ユーザインターフェース・テンプレートの少なくとも１つのデータフォーマットは、対応するデータソースのセルサイズに基づいている；方法は、ウェブデータストアを更新することに基づいてスプレッドシートを更新することをさらに含み得る；方法は、１つまたは複数のユーザインターフェース・テンプレートに関連する少なくとも１つのデータフォーマットへの１つまたは複数の変更を識別するべくスプレッドシートを分析することと、ウェブデータストアに影響を及ぼさずに変更されたデータフォーマットに基づいて対話型ウェブアプリケーションを更新することをさらに含み得る；方法は、１つまたは複数のデータソースのデータレコードになされた１つまたは複数の変更を識別するべくスプレッドシートを分析することと、変更されたデータレコードに基づいてウェブデータストアを更新することをさらに含み得る（この場合、このような修正は、自動的に、インターバルをおいて、ユーザ入力に基づいてなどで行われ得る）；方法は、１つまたは複数のデータソースに関連する少なくとも１つのデータレコードになされた１つまたは複数の変更を識別するべくスプレッドシートを分析することと、変更されたデータレコードに基づいてウェブデータストアを更新することをさらに含み得る（この場合、このような修正は、自動的に、インターバルをおいて、ユーザ入力に基づいてなどでさらに行われ得る）。
【００１９】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、第１のセキュリティパーミッションを有する第１のユーザによるウェブデータストアの修正を防止し、第２のセキュリティパーミッションを有する第２のユーザから受信した入力に応答してウェブデータストアの修正を可能にするべく、セキュリティ制御を含み得る。第１および第２のセキュリティパーミッションは、１つまたは複数のユーザインターフェース・テンプレートに基づいて決定され得る。セキュリティパーミッションは、随意的に、スプレッドシートを生成したスプレッドシートアプリケーションにネイティブな式により定義され得る。
【００２０】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、スプレッドシートは、生成されたウェブデータストアを備え得る、またはウェブデータストアは、スプレッドシートとは別個であり得る。ウェブデータストアの識別または生成は、適用可能なデータを格納する際に、適用可能なスプレッドシート（単数または複数）のレコードまたはその一部を格納することを含み得る。
【００２１】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、ＸＬＳＸ、ＭＳ−ＸＬＳバイナリデータフォーマット、またはＭＳ−ＸＬＳＢバイナリデータフォーマットに準拠するスプレッドシートを用い得る。
【００２２】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、ウェブデータストアを生成した後で、その後、スプレッドシートにおける１つまたは複数のデータレコードになされた１つまたは複数の変更に基づいてウェブデータストアを更新し得る。
【００２３】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、特定のウェブページを生成した後で、スプレッドシートにおける１つまたは複数のユーザインターフェース・テンプレートになされた１つまたは複数の変更に基づいて特定のウェブページを更新し得る。
【００２４】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、データソースに関連する１つまたは複数のデータ制約を識別する少なくとも１つのユーザインターフェース・テンプレートを含み、システムは、１つまたは複数のデータ制約を満たすデータレコードを選択することに基づいて特定のウェブページの提示を生成し得る。１つまたは複数のデータ制約は、随意的に、スプレッドシートにおいて識別されるユーザレベルのセキュリティ制約を含み得る。随意的に、１つまたは複数のデータ制約のうちの少なくとも１つは、スプレッドシートに関連するスプレッドシートアプリケーションにネイティブな式により定義され得る。
【００２５】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、特定のデータソースに関連する１つまたは複数の入力検証ルールを識別する少なくとも１つのユーザインターフェース・テンプレートを含み、システムは、１つまたは複数の入力検証ルールと突き合せてユーザ入力をさらに評価し得る。随意的に、ウェブデータストアが特定のウェブページに関連する１つまたは複数の入力検証ルールを識別するときに、システムは、１つまたは複数の入力検証ルールと突き合せてユーザ入力を評価し得る。
【００２６】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、ウェブアプリケーションを介してユーザ入力を受信し、システムは、１つまたは複数のユーザインターフェース・テンプレートにおいて識別されるデータソースに基づいてウェブ入力フォームを生成し、ウェブ入力フォームを介してユーザ入力を受信し得る。
【００２７】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、対話型ウェブアプリケーションは、第１のユーザインターフェース・テンプレートに基づいてウェブデータストアからデータを出力するためのデータ出力ウェブページを生成し、第２のユーザインターフェース・テンプレートに基づいてウェブデータストアにおけるデータを編集するのに使用可能なデータ編集ウェブページを生成し得る。
【００２８】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、特に、例えば、モバイルデバイスに特有のページを修正するべく特定のウェブページに関連するクライアントデバイス特徴に対応するユーザインターフェース・テンプレートを選択することにより特定のウェブページを生成し得る。
【００２９】
別の態様によれば、ｗｅｂｉｆｉｅｒシステムは、１つまたは複数のプロセッサと、１つまたは複数のプロセッサによって実行されるときにシステムに対話型ソフトウェアアプリケーション（例えば、ウェブアプリケーション）を生成させる命令を格納するメモリを含み得る。ｗｅｂｉｆｉｅｒシステムは、スプレッドシートを評価することに基づいて、それぞれ１つまたは複数のデータレコードを有する、スプレッドシート内の１つまたは複数のデータソースを取得し得、データソースは、スプレッドシートの第１のワークシートの少なくとも一部を備える。システムは、スプレッドシートを評価することに基づいて、それぞれデータソースのうちの１つまたは複数に関するデータフォーマットを備える、スプレッドシート内の１つまたは複数のユーザインターフェース・テンプレートを取得し得、ユーザインターフェース・テンプレートは、スプレッドシートの第２のワークシートの少なくとも一部を備える。システムは、随意的に、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することにより、ウェブデータストアを生成し得る、またはシステムは、（このまたは任意の他の実施形態において）スプレッドシートをウェブデータストアとして用い得る。システムは、ウェブデータストアの抽出したデータレコードに基づいて対話型ソフトウェアアプリケーションの特定のウェブページを生成し得、特定のウェブページは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに基づいて識別されるおよびフォーマットされるデータレコードへの参照を備える。対話型ソフトウェアアプリケーションの特定のウェブページの提示に関する要求に応答して、システムは、特定のウェブページの提示を生成し得る。システムはまた、対話型ソフトウェアアプリケーションを介してユーザ入力を受信することに応答してウェブデータストアを更新し得る。
【００３０】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、データソースに関連する１つまたは複数のデータ制約を識別する少なくとも１つのユーザインターフェース・テンプレートを含み得る。命令は、１つまたは複数のプロセッサによって実行されるときに、さらにシステムに、１つまたは複数のデータ制約を満たすデータレコードを選択することに基づいて特定のウェブページの提示を生成させ得る。
【００３１】
別の態様または実施形態によれば、ｗｅｂｉｆｉｅｒシステムは、対話型ウェブアプリケーションを生成し得る。ｗｅｂｉｆｉｅｒシステムは、スプレッドシートを評価することに基づいて、それぞれゼロまたはそれ以上のデータレコードを有する、スプレッドシート内の１つまたは複数のデータソースを取得し得、データソースは、スプレッドシートの第１のワークシートの少なくとも一部を備える。システムは、スプレッドシートを評価することに基づいて、それぞれデータソースのうちの１つまたは複数に関するデータフォーマットを備える、スプレッドシート内の１つまたは複数のユーザインターフェース・テンプレートを取得し得、ユーザインターフェース・テンプレートは、スプレッドシートの第２のワークシートの少なくとも一部を備える。システムは、スプレッドシート内で識別されるデータソースからのデータレコードを備えるウェブデータストアを生成し得る。システムは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに基づいて対話型ウェブアプリケーションの特定のウェブページを生成し得、特定のウェブページは、データソースのうちの少なくとも１つのデータソースへの参照および特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに基づく書式設定を備える。システムは、対話型ウェブアプリケーションの特定のウェブページの提示に関する要求に応答して、少なくとも１つのデータソースに関連するおよび特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに従ってフォーマットされる１つまたは複数のデータレコードを含む特定のウェブページの提示を生成し得る。システムは、対話型ウェブアプリケーションを介してユーザ入力を受信することに応答してウェブデータストアを更新し得る。第１のワークシートは、第２のワークシートと同じワークシートまたは異なるワークシートであり得る。
【００３２】
別の態様によれば、任意の１つまたは複数の実施形態は、表示のためにスプレッドシートの少なくとも一部を提示するスプレッドシート・ユーザインターフェースを生成することをさらに含み得、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート内の１つまたは複数のデータソースを識別することおよびスプレッドシート内の１つまたは複数のユーザインターフェース・テンプレートを識別することを可能にする１つまたは複数の制御を備える。次いで、対話型ウェブアプリケーションの特定のウェブページを生成することは、特定のウェブページに対応する少なくとも１つまたは複数のユーザインターフェース・テンプレートを識別する１つまたは複数の制御を介してユーザ入力を受信することに応答して行われ得る。
【００３３】
１つまたは複数の実施形態において、および任意の他の実施形態との組み合わせにおいて、スプレッドシート・ユーザインターフェースは、セルの二次元配列を備える。スプレッドシート・ユーザインターフェースのセルは、数値、テキスト値、および式をサポートし得る。スプレッドシート・ユーザインターフェースにおけるセルの式は、ユーザが数学的計算を指定することを可能にし得る。スプレッドシート・ユーザインターフェースにおけるセルの式は、複数の他のセルへの参照を可能にし得る。スプレッドシート・ユーザインターフェースにおけるセルの式はまた、数式および文字列操作関数をサポートし得る。
【００３４】
随意的に、スプレッドシート・ユーザインターフェースにおけるセルの式は、名前付き関数への参照をサポートし、スプレッドシート・ユーザインターフェースのセルは、スプレッドシート・ユーザインターフェースの所与の行、所与の列、または所与の領域内の異種のフォーマットおよび式をサポートし、および／または、スプレッドシート・ユーザインターフェースにおけるセルの式は、他の式、数値、またはテキスト値を含む他のセルへの参照をサポートし得る。
【００３５】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート・ユーザインターフェースのセルを編集およびフォーマットすることを可能にする視覚編集ユーザインターフェースを提供し、視覚編集ユーザインターフェースは、フォーマットの変更、式の変更、およびフォーマット評価値および／またはルールに基づいてユーザに視覚フィードバックを提供し得る。
【００３６】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、他のセルの内容が複数の行または複数の列にわたって視覚的にスパンし得るかどうかに影響を及ぼさずに、単一セルの内容が複数の行または複数の列にわたって視覚的にスパンし得ることをユーザが示すことを可能にし得る。
【００３７】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザが単一セルまたはセルの範囲を強調表示するべくそれらと対話することによってセルを選択するおよびセルの内容を他のセルに移動することを可能にし得る。
【００３８】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザが１つまたは複数のセルへの参照を現在編集中のセルの式に自動的に挿入するためにそれらのセルを選択することを可能にし得る。
【００３９】
いくつかの実施形態では、ユーザ入力は、署名および署名に関連するメタデータを備え得る。
【００４０】
いくつかの態様において、ｗｅｂｉｆｉｅｒシステムは、モバイルデバイスまたはモバイルアプリケーションによる表示のためにモバイルソフトウェアアプリケーションおよび／またはコンテンツを生成し得る。ｗｅｂｉｆｉｅｒシステムは、スプレッドシート内の１つまたは複数のデータソースを決定し、各データソースは、１つまたは複数のデータレコードを有し得る。ｗｅｂｉｆｉｅｒシステムは、スプレッドシート内の１つまたは複数のユーザインターフェース・テンプレートを決定し、各テンプレートは、データソースのうちの１つまたは複数に関するデータフォーマットを備え得る。ｗｅｂｉｆｉｅｒシステムは、随意的に、スプレッドシート内で識別されるデータソースからのデータレコードを備えるデータストアを生成し得る、または、スプレッドシートをデータストアとして用い得る。ｗｅｂｉｆｉｅｒシステムは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに基づいて特定のウェブページの複数のバージョンを生成し得、特定のウェブページは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートに基づいて識別される１つまたは複数のデータソースを参照し、特定のウェブページのバージョンのうちの少なくとも１つは、モバイルクライアントに関連する１つまたは複数のユーザインターフェース・テンプレートに基づくモバイルバージョンである。ｗｅｂｉｆｉｅｒシステムは、例えば、要求がユーザデバイスをモバイルクライアントまたはデバイスとして識別する場合に、モバイルデバイスから対話型ウェブアプリケーションの特定のウェブページの提示に関する要求を受信し得る。要求に応答して、ｗｅｂｉｆｉｅｒシステムは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートおよびモバイルクライアントに関連する１つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされる１つまたは複数のデータレコードを含む特定のウェブページのモバイルバージョンの提示を生成し得る。ｗｅｂｉｆｉｅｒシステムは、モバイルデバイスからユーザ入力を受信することに応答してデータストアを更新し得る。
【００４１】
別の態様によれば、および任意の他の態様または実施形態との組み合わせにおいて、ｗｅｂｉｆｉｅｒシステムは、データファイルのデータレコードを提示するスプレッドシート・ユーザインターフェースを生成し得、スプレッドシート・ユーザインターフェースは、データレコードを、複数のセルを備える行および列の表形式で表示し、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート・ユーザインターフェースの第２のセルの値に基づいてスプレッドシート・ユーザインターフェースの第１のセルの値を計算するべく式を定義することを可能にする。
【００４２】
スプレッドシート・ユーザインターフェースは、数値、テキスト値、および式をサポートするセルの二次元配列を含み得る。スプレッドシート・ユーザインターフェースにおけるセルの式は、ユーザが数学的計算、複数の他のセルへの参照、名前付き関数（および／または領域）への参照、および／または数式および文字列操作関数を指定することを可能にする。
【００４３】
いくつかの態様において、スプレッドシート・ユーザインターフェースのセルは、スプレッドシート・ユーザインターフェースの所与の行、所与の列、または所与の領域内の異種のフォーマット、および／または他の式、数値、またはテキスト値を含む他のセルへの参照をサポートし得る。
【００４４】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザがスプレッドシート・ユーザインターフェースのセルを編集およびフォーマットすることを可能にする視覚編集ユーザインターフェースを提供し、視覚編集ユーザインターフェースは、フォーマットの変更、式の変更、およびフォーマット評価値に基づいてユーザに視覚フィードバックを提供し得る。
【００４５】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、他のセルの内容が複数の行または複数の列にわたって視覚的にスパンし得るかどうかに影響を及ぼさずに、単一セルの内容が複数の行または複数の列にわたって視覚的にスパンし得ることをユーザが示すことを可能にし得る。
【００４６】
いくつかの態様において、スプレッドシート・ユーザインターフェースは、ユーザが単一セルまたはセルの範囲を強調表示するべくそれらと対話することによってセルを選択するおよびセルの内容を他のセルに移動することを可能にし得る、および／または、ユーザが１つまたは複数のセルへの参照を現在編集中のセルの式に自動的に挿入するためにそれらのセルを選択することを可能にし得る。
【００４７】
別の態様または実施形態によれば、ｗｅｂｉｆｉｅｒシステムは、対話型ソフトウェアアプリケーションを生成し得る。ｗｅｂｉｆｉｅｒシステムは、それぞれ１つまたは複数のデータレコードを有する１つまたは複数のデータソースを識別するべくスプレッドシート（単数または複数）を分析（または処理、決定、取得など）し得る。ｗｅｂｉｆｉｅｒシステムは、それぞれ１つまたは複数のデータソースに関するデータフォーマットを備える１つまたは複数のユーザインターフェース・テンプレートを識別するべくスプレッドシート（単数または複数）を分析（または処理、決定、取得など）し得る。ｗｅｂｉｆｉｅｒシステムは、随意的に、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することにより、ウェブデータストアを生成し得る、またはｗｅｂｉｆｉｅｒシステムは、スプレッドシート（単数または複数）をウェブデータストアとして用い得る。対話型ソフトウェアアプリケーション内で特定のウェブページを作成する要求に応答して、ｗｅｂｉｆｉｅｒシステムは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートを識別し、特定のウェブページに対応する１つまたは複数のデータソースを識別し、識別した１つまたは複数のユーザインターフェース・テンプレートに基づいておよび１つまたは複数の識別したデータソースに基づいて特定のウェブページを生成し得る。ｗｅｂｉｆｉｅｒシステムは、特定のウェブページに関するクライアントデバイスからの要求に応答して、１つまたは複数の識別したデータソースに基づいてウェブデータストアから１つまたは複数のデータレコードを取得し、１つまたは複数の識別したユーザインターフェース・テンプレートに従ってフォーマットされる１つまたは複数の取得したデータレコードを含む特定のウェブページを提供し得る。ｗｅｂｉｆｉｅｒシステムは、ウェブアプリケーションを介してユーザ入力を受信することに応答してウェブデータストア（または適用できる場合はスプレッドシート）を更新し得る。
【００４８】
別の態様または実施形態によれば、ｗｅｂｉｆｉｅｒシステムは、対話型ウェブアプリケーションを生成し得る。ｗｅｂｉｆｉｅｒシステムは、それぞれ１つまたは複数のデータレコードを有する１つまたは複数のデータソースを識別するべくスプレッドシート（または複数のスプレッドシート）を分析（または処理、決定、取得など）し得る。ｗｅｂｉｆｉｅｒシステムはまた、それぞれ１つまたは複数のデータソースに関するデータフォーマットを備える１つまたは複数のユーザインターフェース・テンプレートをスプレッドシート（単数または複数）内で識別し得る。ｗｅｂｉｆｉｅｒシステムは、随意的に、スプレッドシート内で識別されるデータソースからデータレコードを抽出し、データレコードをウェブデータストアに格納することにより、ウェブデータストアを生成し得る、またはｗｅｂｉｆｉｅｒシステムは、スプレッドシート（単数または複数）をウェブデータストアとして用い得る。ｗｅｂｉｆｉｅｒシステムは、対話型ウェブアプリケーション内の特定のウェブページに関する第１の要求に応答して、ウェブデータストア（またはスプレッドシート（単数または複数））からのデータレコードを用いて特定のウェブページを作り得、この場合、データレコードは、特定のウェブページに対応する１つまたは複数のユーザインターフェース・テンプレートにより識別されるおよびフォーマットされる。ｗｅｂｉｆｉｅｒシステムは、ウェブデータストアを生成した後でなされた１つまたは複数の変更を識別するべくスプレッドシートを分析し、スプレッドシートになされた１つまたは複数の変更を用いて対話型ウェブアプリケーションを更新し得る。特定のウェブページに関する第２の要求に応答して、ｗｅｂｉｆｉｅｒシステムは、スプレッドシートになされた１つまたは複数の変更を組み込む特定のウェブページを作り得る。
【００４９】
いくつかの態様において、スプレッドシートになされた１つまたは複数の変更は、ユーザインターフェース・テンプレートへの編集を含み得、スプレッドシートになされた１つまたは複数の変更を組み込む特定のウェブページを作ることは、データレコードを変えずに、ユーザインターフェース・テンプレートへの編集を組み込む特定のウェブページを生成することを含む。
【００５０】
いくつかの態様において、スプレッドシートになされた１つまたは複数の変更が、データレコードへの編集を含む場合、スプレッドシートになされた１つまたは複数の変更を組み込む特定のウェブページを作ることは、ユーザインターフェース・テンプレートを変えずに、データレコードへの編集を組み込む特定のウェブページを生成することを含み得る。
【００５１】
本明細書で説明される第１の態様は、少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するための方法、システム、およびコンピュータ可読媒体を提供し得る。本方法は、スプレッドシート内の少なくとも１つの一次データソースを決定することを含み得る。一次データソースは、スプレッドシートの第１のワークシートに対応し得る。少なくとも１つの二次データソースは、スプレッドシートの異なる第２のワークシートに対応するスプレッドシート内で決定され得る。本方法は、一次データソースのレコードと二次データソースのレコードとの間の関係を決定し得る。本方法は、自動的に、かつこの決定された関係に基づいて、一次データソースのレコードの少なくとも一部および二次データソースのレコードの少なくとも一部を備える第３のワークシートを生成し得る。第３のワークシートは、一次データソースのレコードおよび／または二次データソースのレコードの間接的なビューを含んでもよい。第３のワークシートのコンテンツは、第１のワークシートのコンテンツおよび第２のワークシートのコンテンツと同期され得る。本方法は、特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートに基づいて対話型ウェブアプリケーションの特定のウェブページを生成し得る。特定のウェブページは、特定のウェブページに対応する少なくとも１つのユーザインターフェース・テンプレートに基づいて識別される第３のワークシートのレコードを参照し得る。本方法は、対話型ウェブアプリケーションの特定のウェブページに関連する入力制御を介してユーザ入力を受信し、受信したユーザ入力に基づいて、かつ、決定された関係に基づいて、一次データソースおよび／または二次データソースの少なくとも１つのレコードを更新し得る。
【００５２】
いくつかの実施態様では、本方法は、一次データソースおよび二次データソースを識別するスプレッドシート内の第１のユーザインターフェース・テンプレートを決定し得る。これに応答して、本方法は、第１のユーザインターフェース・テンプレートに基づいて関係を決定し、その関係に基づいて第３のワークシートを生成し得る。本方法は、ユーザから付加的な情報を受信することにより、かつ／または本明細書でさらに説明される手がかりなどのデータの１つまたは複数の特徴に対応する情報に基づいて自動的に関係を検出することなどによって、一次データソースと二次データソースとの間の関係を識別する他の方法を含み得る。対応するシステムおよびコンピュータ可読媒体も開示される。
【００５３】
前述のどの特徴も、どの特定の態様または実施形態と共に用いられてもよいことに留意されたい。上記の実施形態の特徴および本明細書で説明されるものの多くの組み合わせ、修正、または変更が、当業者にはすぐに分かるであろうし、それらは本発明の一部をなすことを意図されている。一実施形態または例に関係して具体的に説明した特徴のいずれも、どの他の実施形態で用いられてもよい。
【００５４】
この特許または出願ファイルは、カラーで作製された少なくとも１つの図面を含む。彩色図面を伴うこの特許または特許出願公開のコピーは、請求および必要な料金の納付後に、米国特許商標庁により提供されることになる。
【００５５】
同様の参照番号が同様の特徴を示す添付図を考慮して以下の説明を参照することによって、本明細書で説明される態様およびその利点のより十分な理解が得られるであろう。
【図面の簡単な説明】
【００５６】
【図１】本明細書で説明される１つまたは複数の例示的な態様と共に用いられ得るシステムアーキテクチャを例示する図である。
【図２】本明細書で説明される１つまたは複数の例示的な態様に係る迅速なソフトウェアアプリケーション開発を行う方法である。
【図３Ａ】本明細書で説明される１つまたは複数の例示的な態様を実装するのに用いられ得る例示的なソフトウェアシステムアーキテクチャを示す図である。
【図３Ｂ】本明細書で説明される１つまたは複数の例示的な態様を実装するのに用いられ得る例示的なソフトウェアシステムアーキテクチャを示す図である。
【図４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図１９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図２９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図３９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図４９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図５９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図６９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図７９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図８９】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９０】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９１】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９２】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９３】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９４】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９５】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９６】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９７】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【図９８】本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムのスクリーンショットである。
【発明を実施するための形態】
【００５７】
概論として、本明細書で説明される態様は、ソフトウェアアプリケーションの基礎をなす青写真として１つまたは複数のスプレッドシートを用いて複雑なソフトウェアアプリケーションを自動的に生成するように動作可能なローコード／ノーコードの方法およびシステムを提供し得る。いくつかの態様によれば、結果として得られるソフトウェアアプリケーションは、静的（読出し専用）であり得る、または、ユーザが、例えば、１つまたは複数のオンラインウェブページを介して、アプリケーションデータを動的に追加する、削除する、編集する、または他の方法で修正することを可能にするべく対話型（読み出し／書き込み）であり得る。データ転送は、青写真のスプレッドシートと結果として得られるソフトウェアアプリケーションとの間で一方向または双方向であってよく、いくつかの実施形態では、これにより、修正されたデータが、ソフトウェアアプリケーションとスプレッドシートフォームとの間で転送される、オリジナルのスプレッドシート（単数または複数）に返送されるまたは新しいスプレッドシート（単数または複数）へ転送されることを可能にする。
【００５８】
本明細書で用いられる場合のスプレッドシートは、データが格納されるフォームに関係なく、ユーザに提示するためのデータの論理配列を指す。スプレッドシートソフトウェアアプリケーション（例えば、ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬ、ＡＰＰＬＥ  ＮＵＭＢＥＲＳ、およびＧＮＯＭＥ  ＧＮＵＭＥＲＩＣ）は、データがグリッドの行および列に配列されるスプレッドシートをユーザが作成および編集することを可能にする良く知られたタイプのソフトウェアであり、操作するおよび計算に用いることができる。スプレッドシートソフトウェアアプリケーションはまた、コンピュータ上でローカルにまたはクラウドベースのアーキテクチャで使用可能な、データの表形式での編成、分析、およびストレージのための対話型コンピュータアプリケーションを指し得る。スプレッドシートは、集計用紙のコンピュータシミュレーションであるとも言われている。スプレッドシートソフトウェアアプリケーションは、一般に、スプレッドシートのセルに入力されたデータで動作し、スプレッドシートの各セルは、数値データ、テキストデータ、或いは数式、１つまたは複数の他のセルの内容、またはさらには外部リンクされるデータに基づく値を自動的に計算および表示する式の結果を含み得る。１つの例示的な態様によれば、スプレッドシートは、特定のスプレッドシートソフトウェアアプリケーションにより使用可能なデータファイルとして定義され得る。１つまたは複数のスプレッドシート・ドキュメントまたはデータファイルは、同じおよび／または異なるファイルから他のスプレッドシート／ワークシートのデータを参照するまたはしない場合がある複数の個々のおよび／または別個のスプレッドシート（例えば、ワークシート、タブ）を備え得る。ある点では、スプレッドシートがデータベース用途と非データベース用途との両方をサポートするのに対し、データベースが通常は１つまたは複数のインデックス付きテーブルにデータが格納されることを必要とすることに限って言えば、スプレッドシートは、データベースとは異なる。本明細書で説明される例示的な態様は、ローカルのスプレッドシートアプリケーションソフトウェアに関係し得る。しかしながら、他の例示的な態様では、スプレッドシートは、データが最終的に格納される機能またはフォーマットを提供するバックエンドのシステムアーキテクチャに関係なく、ウェブブラウザまたは他のネットワーク化されたユーザインターフェースを通じてスプレッドシート関数および特徴をユーザに提示する、クラウドベースのシステムのユーザインターフェースを介してユーザに提示され得る（例えば、ＧＯＯＧＬＥ  ＳＨＥＥＴＳ、ＭＩＣＲＯＳＯＦＴ  ＯＦＦＩＣＥ  ＯＮＬＩＮＥ、ＥｄｉｔＧｒｉｄ、ＺＫ  Ｓｐｒｅａｄｓｈｅｅｔ、Ｓｈｅｅｔｓｔｅｒ、Ｓｍａｒｔｓｈｅｅｔ、ＤＨＴＭＬＸ  Ｓｐｒｅａｄｓｈｅｅｔ、Ｗｅｂｉｘ、ｅＸｐｒｅｓｓｏ、ＴｈｉｎｋＦｒｅｅ  Ｃｅｌｌ）。本明細書で説明される態様は、ローカルのスプレッドシートアプリケーションソフトウェア実装とクラウドベースのスプレッドシート実装との両方、または任意の他のスプレッドシート実装に適用され得る。
【００５９】
スプレッドシートアプリケーションは、ユーザにより閲覧されるときに、通常は、共通して、行および列のセルの特徴的な二次元配列、もしかすると付加的な二次元配列として表される任意の付加的なディメンション、ユーザにより入力された数値またはテキスト値または式を含むことができるセル、およびユーザが数学的計算を指定することおよび／または二次元配列内のセルの位置により複数の他のセルを参照することを可能にするセルの式を有する。ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬおよびＧＯＯＧＬＥ  ＳＨＥＥＴＳを含むいくつかの現代の複雑なスプレッドシートアプリケーションは、往々にして、共通して、数式または文字列操作式とすることができるセルの式、他の式または数値またはテキスト値を含む他のセルを参照することができるセルの式、ユーザがビジュアルＷＹＳＩＷＹＧ（“Ｗｈａｔ  Ｙｏｕ  Ｓｅｅ  Ｉｓ  Ｗｈａｔ  Ｙｏｕ  Ｇｅｔ”）エディタでセルをフォーマットする能力、フォーマットの変更および式の変更および式の評価の結果として生じる値のユーザへの即座の視覚フィードバック、“ｓｕｍ（）”または“ｃｏｎｃａｔｅｎａｔｅ（）”などの名前付き関数を呼び出すことができるセルの式、“Ａ１：Ｂ１０”または“Ａ１：Ａ１０，Ｃ１：Ｃ１０”などの単一セルまたはセルの範囲とすることができるセル参照、他のセル参照に用いられるべきテキストエイリアスを割り当てることができるセル範囲、ユーザが最初に単一セルまたはセルの範囲を強調表示するべくそれらと対話することによってセルを選択するおよびセルの内容を他のセルに移動することを可能にするユーザインターフェース、それらのセルへの参照を現在編集中のセルの式に自動的に挿入するためにユーザが１つまたは複数のセルを選択することを可能にするユーザインターフェース、他のセルが同様にスパンすることを必要とせずに単一セルまたは単一セルの内容が複数の行および／または列にわたって視覚的にスパンし得ることをユーザが指定できること、行と列が交換可能であり、したがって、データを回転された配向で入力することもできるようにデータの論理配向に対する最小の制約または無制約、フォーマットおよび値および式がセルの行全体または列全体または領域全体にわたって一貫している必要がないセル、および幅をグループとして変更することができる列、のさらなる特徴のうちの１つまたは複数を有する。すべてのこれらの特徴が、アプリケーションがスプレッドシートソフトウェアアプリケーションとなるのに必要とされるわけではない。
【００６０】
種々の実施形態の以下の説明では、本明細書で説明される態様が実施され得る種々の実施形態が例示のために示される、本明細書の一部をなす添付図が参照される。説明した態様および実施形態の範囲から逸脱することなく、他の実施形態が用いられ得ること、並びに、構造上および機能上の修正がなされ得ることが理解される。本明細書で説明される態様は、他の実施形態が可能であり、種々の方法で実施または実行されることが可能である。また、本明細書で用いられる専門語および用語は、説明するためのものであって、限定するものとしてみなされるべきではないことが理解される。むしろ、本明細書で用いられる文言および用語は、それらの広い解釈および意味が与えられるべきである。「含む（ｉｎｃｌｕｄｉｎｇ）」および「含む、備える（ｃｏｍｐｒｉｓｉｎｇ）」およびその変形の使用は、その後リストされるアイテムおよびその均等物、並びに、付加的なアイテムおよびその均等物を包含するように意図されている。「マウントされる」、「接続される」、「結合される」、「配置される」、「係合される」という用語、および同様の用語の使用は、直接的と間接的との両方でのマウント、接続、結合、配置、および係合を含むように意図されている。
【００６１】
図１は、本明細書で説明される１つまたは複数の例示的な態様を実装するのに用いられ得るネットワークアーキテクチャおよびデータ処理デバイスの一例を示す。種々のネットワークノード１０３、１０５、１０７、および１０９が、インターネットなどの広域ネットワーク（ＷＡＮ）１０１を介して相互接続され得る。プライベートイントラネット、企業ネットワーク、ＬＡＮ、無線ネットワーク、パーソナルネットワーク（ＰＡＮ）などを含む他のネットワークもまたは代替的に用いられ得る。ネットワーク１０１は、例示するためのものであって、より少ないまたは付加的なコンピュータネットワークと置き換えられ得る。ローカルエリアネットワーク（ＬＡＮ）は、あらゆる公知のＬＡＮトポロジーのうちの１つまたは複数を有し得る、および、イーサネットなどの様々な異なるプロトコルのうちの１つまたは複数を用い得る。デバイス１０３、１０５、１０７、１０９および他のデバイス（図示せず）は、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介して、ネットワークのうちの１つまたは複数に接続され得る。
【００６２】
本明細書で用いられ図面に描かれる場合の「ネットワーク」という用語は、遠隔ストレージデバイスが１つまたは複数の通信路を介して一緒に結合されるシステムだけでなく、ストレージ能力を有するこのようなシステムにその時々に結合され得る独立型のデバイスも指す。したがって、「ネットワーク」という用語は、「物理ネットワーク」だけでなく、例えば、ストレージ・エリア・ネットワーク（ＳＡＮ、図示せず）を用いる、すべての物理ネットワークに常駐する単一のエンティティに帰属するデータからなる「コンテンツネットワーク」も含む。
【００６３】
コンポーネントは、データサーバ１０３、ウェブサーバ１０５、およびクライアントコンピュータ１０７、１０９を含み得る。データサーバ１０３は、本明細書で説明される１つまたは複数の例示的な態様を行うためのデータベースおよび制御ソフトウェアのアクセス、制御、および管理を全般的に提供する。データサーバ１０３は、ウェブサーバ１０５に接続されてよく、ウェブサーバ１０５を通じて、ユーザが対話するおよび要求したデータを取得する。代替的に、データサーバ１０３は、ウェブサーバ自体として作用し、インターネットに直接接続され得る。データサーバ１０３は、ネットワーク１０１（例えば、インターネット）を通じて、直接または間接的な接続を介して、またはいくつかの他のネットワークを介して、ウェブサーバ１０５に接続され得る。ユーザは、リモートコンピュータ１０７、１０９を用いて、例えば、ウェブブラウザを用いて、データサーバ１０３および／またはウェブサーバ１０５と対話し得る。クライアントコンピュータ１０７、１０９は、そこに格納されたデータにアクセスするべくデータサーバ１０３と共同して用いられ得る、または他の目的のために用いられ得る。例えば、クライアントデバイス１０７から、ユーザは、当該技術分野では公知のインターネットブラウザを用いて、またはコンピュータネットワーク（インターネットなど）上でウェブサーバ１０５および／またはデータサーバ１０３と通信するソフトウェアアプリケーションを実行することにより、ウェブサーバ１０５にアクセスし得る。
【００６４】
サーバとアプリケーションは、同じ物理マシン上で組み合わされ、別個の仮想アドレスまたは論理アドレスを保持し得る、または、別個の物理マシン上に常駐し得る。図１は、用いられ得るネットワークアーキテクチャのほんの一例を示し、用いられる具体的なネットワークアーキテクチャおよびデータ処理デバイスは、変化し得るものであり、本明細書でさらに説明されるそれらが提供する機能に従属する。例えば、ウェブサーバ１０５およびデータサーバ１０３によって提供されるサービスは、単一のサーバ上で組み合わされてよい。
【００６５】
各コンポーネント１０３、１０５、１０７、１０９は、あらゆるタイプの公知のコンピュータ、サーバ、または他のデータ処理デバイスであり得る。データサーバ１０３は、例えば、データサーバ１０３の動作全般を制御するプロセッサ１１１を含み得る。データサーバ１０３は、ＲＡＭ１１３、ＲＯＭ１１５、ネットワーク・インターフェース１１７、入力／出力インターフェース１１９（例えば、キーボード、マウス、ディスプレイ、プリンタなど）、およびメモリ１２１をさらに含み得る。Ｉ／Ｏ１１９は、データまたはファイルを読み出す、書き込む、表示する、および／または印刷するための様々なインターフェースユニットおよびドライブを含み得る。メモリ１２１は、データ処理デバイス１０３の動作全般を制御するためのオペレーティングシステムソフトウェア１２３と、本明細書で説明される１つまたは複数の態様を行うようにデータサーバ１０３に命じるためのｗｅｂｉｆｉｅｒ制御論理１２５と、従属、サポート、および／または本明細書で説明される他の態様と併せて用いられ得る他の機能を提供する他のアプリケーションソフトウェア１２７、例えば、スプレッドシートソフトウェアアプリケーションをさらに格納し得る。ｗｅｂｉｆｉｅｒ制御論理は、本明細書では、データサーバソフトウェア、ｗｅｂｉｆｉｅｒシステム、ｗｅｂｉｆｉｅｒソフトウェア、ｗｅｂｉｆｉｅｒプラグイン、または簡単にｗｅｂｉｆｉｅｒとも呼ばれる場合がある。データサーバソフトウェアの機能は、制御論理にコード化されたルールに基づいて自動的に行われる動作または決定、システムに入力を提供するユーザにより手動で行われる動作または決定、および／またはユーザ入力に基づく自動処理の組み合わせ（例えば、クエリ、データ更新など）を指す場合がある。
【００６６】
メモリ１２１はまた、第１のデータ１２９（例えば、スプレッドシート・ドキュメントまたはファイル）および第２のデータ１３１（例えば、さらに後述するウェブデータストア）を含む、本明細書で説明される１つまたは複数の態様の実行に用いられるデータを格納し得る。デバイス１０５、１０７、１０９は、デバイス１０３に関して説明したのと同様のアーキテクチャまたは異なるアーキテクチャを有し得る。本明細書で説明されるデータ処理デバイス１０３（またはデバイス１０５、１０７、１０９）の機能は、例えば、複数のコンピュータにわたって処理負荷を分散させるために、地理的位置、ユーザアクセスレベル、サービスの品質（ＱｏＳ）などに基づいてトランザクションを分離するために、複数のデータ処理デバイスにわたって分散され得る。
【００６７】
本明細書で説明される１つまたは複数の態様は、本明細書で説明される１つまたは複数のコンピュータまたは他のデバイスにより実行される、１つまたは複数のプログラムモジュールなどの、コンピュータで使用可能なまたは読み出し可能なデータおよび／またはコンピュータで実行可能な命令で具体化され得る。一般に、プログラムモジュールは、コンピュータのプロセッサまたは他のデバイスによって実行されるときに特定のタスクを行うまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のためにその後コンパイルされるソースコードプログラミング言語で書かれ得る、または（限定はされないが）ＨＴＭＬまたはＸＭＬなどのスクリプト言語で書かれ得る。コンピュータで実行可能な命令は、ハードディスク、光ディスク、リムーバブル格納媒体、ソリッドステートメモリ、ＵＳＢドライブ、ＲＡＭなどの有形の一時的でないコンピュータ可読媒体上に格納され得る。当業者には分かるように、プログラムモジュールの機能は、種々の実施形態において要望に応じて組み合わされるか、または分散され得る。加えて、機能は、集積回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのファームウェアまたはハードウェア均等物で全体的にまたは部分的に具体化され得る。１つまたは複数の態様をより効果的に実装するのに特定のデータ構造が用いられてよく、このようなデータ構造は、本明細書で説明されるコンピュータで実行可能な命令およびコンピュータで使用可能なデータの範囲内で考えられる。
【００６８】
一態様によれば、ｗｅｂｉｆｉｅｒソフトウェアは、既存のスプレッドシートソフトウェアアプリケーション、例えば、ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬ内のプラグイン内で用いるためのプラグインまたはモジュールを備え得る。代替的に、ｗｅｂｉｆｉｅｒソフトウェアは、１つまたは複数のスプレッドシートデータファイル（例えば、ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬ．ｘｌｓ／．ｘｌｓｘ  ｗｏｒｋｂｏｏｋファイルまたは任意の他のスプレッドシートデータファイル）および本明細書で説明される１つまたは複数のソフトウェアおよび／またはウェブアプリケーションを入力として受け入れ、かつ出力として生成する、独立型のソフトウェアアプリケーションを備え得る。ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬは、単に例示する目的で用いられる。本明細書で説明される原理はまた、他のスプレッドシートソフトウェアアプリケーション、並びに他のスプレッドシート・ストレージフォーマット、スキーマ、および／または規格と共に適用可能である。例えば、ＣＯＲＥＬ  ＱＵＡＴＴＲＯ  ＰＲＯ、ＧＯＯＧＬＥ  ＳＨＥＥＴＳ、ＧＮＵＭＥＲＩＣ、ＯＰＥＮＯＦＦＩＣＥ  ＣＡＬＣ、または任意の他のスプレッドシートソフトウェア、アプリケーション、および／またはドキュメントフォーマットが用いられ得る。上記のように、本明細書での態様は、ローカルのスプレッドシートアプリケーションソフトウェア実装とクラウドベースのスプレッドシート実装との両方に等しく適用され得る。
【００６９】
図２は、本明細書で説明される１つまたは複数の態様に係るソフトウェアアプリケーションを生成する例示的な方法を示す。最初に、ステップ２０１で、ユーザ（本明細書では設計者とも呼ばれる）は、設計者が選ぶスプレッドシートソフトウェアアプリケーションを用いてスプレッドシートを作成および／または編集し得る。設計者は、データソースを、各行がデータソースのレコードであるテーブルとして設定および定義し得る、および／または、データソースを、各個々のスプレッドシートがデータソースのレコードであるスプレッドシートファイルとして定義し得る。このようにして、設計者は、１つまたは複数のデータソースを定義し、データレコードを１つまたは複数のデータソースに入力し得る。
【００７０】
ステップ２０３で、ｗｅｂｉｆｉｅｒソフトウェアは、自動的にまたはユーザ入力に応答して、データソースおよびデータレコードを識別するべくスプレッドシートを分析し得る。ユーザ入力に応答するときに、ｗｅｂｉｆｉｅｒソフトウェアは、さらに後述するように、どんなタイプのユーザアクションが要求されるかに応じて異なる方法でスプレッドシートを解析し得る。
【００７１】
ステップ２０５で、ｗｅｂｉｆｉｅｒソフトウェアは、１つまたは複数のユーザインターフェース・テンプレートを識別するべくスプレッドシートを分析し得る。ユーザインターフェース・テンプレートは、１つまたは複数のデータソースに関するデータフォーマット、例えば、フォント、サイズ、色、スタイルなどを含み得る、および／または、それぞれ１つまたは複数のデータレコードを含む場合がある１つまたは複数のデータソースの選択または識別を含み得る。ユーザインターフェース・テンプレートはまた、データソースおよびレコード自体を含み得る。
【００７２】
次に、ステップ２０７で、ｗｅｂｉｆｉｅｒソフトウェアは、スプレッドシートからのデータを用いてウェブデータストアを生成し得る。ウェブデータストアは、スプレッドシート自体においてまたは生成プロセス中に設計者により設定される１つまたは複数の基準または制限に基づいて、スプレッドシートからのすべてのデータ、またはスプレッドシートからのデータのサブセットのみを含み得る。代替的に、ウェブデータストアは、スプレッドシート自体を備え得る、またはスプレッドシートに含まれ得る。
【００７３】
ステップ２０９で、ｗｅｂｉｆｉｅｒは、動的な対話型ウェブアプリケーションの一部として１つまたは複数のウェブページを生成し得る。各ウェブページは、ステップ２０５で識別された１つまたは複数のユーザインターフェース・テンプレートに基づき得る。各ユーザインターフェース・テンプレートは、ウェブページ上に含めるためのデータフォーマットおよび／または１つまたは複数のデータソースを定義および／または識別し得る。各ウェブページは、エンドユーザのブラウザへの送信のためにレンダリングまたは生成されると、ユーザインターフェース・テンプレートに記載された基準を満たすウェブデータストアからデータをポピュレートされ得る。ユーザインターフェース・テンプレートがデータソースおよびレコード自体を備える場合、結果として生じるウェブページは、スプレッドシートにおけるデータに基づく単純なウェブテーブルとして現れ得る。
【００７４】
例えば、設計者がユーザインターフェース・テンプレートの一部として対話能力を指定する結果として、または設計者が対応するウェブページを生成するようにｗｅｂｉｆｉｅｒソフトウェアに命じるときに対話能力を必要とする結果として、１つまたは複数のウェブページは、対話型ウェブページとして生成され得る。
【００７５】
ステップ２１１で、ウェブページが対話型のときに、ウェブアプリケーションは、ウェブページを介して、例えば、フォームフィールド、入力ボックス、またはあらゆる他のユーザ入力機構を用いて、１つまたは複数のデータレコードを編集するべくユーザ入力を受信し得る。ステップ２１３で、ウェブアプリケーションは、ユーザ入力に基づいてウェブデータストアを更新する、例えば、ウェブデータストアに以前に格納されたデータに追加、編集、削除、および／または他の方法で修正を行う。ステップ２１５で、ｗｅｂｉｆｉｅｒソフトウェアおよび／またはウェブアプリケーションは、最初にウェブアプリケーションを生成するのに用いられるオリジナルの青写真のスプレッドシートのデータを更新するのに用いられ得る、またはデータを新しいスプレッドシートに出力し得る。青写真のスプレッドシートのデータを置き換えるときに、データの書式設定は保持され、データだけが置き換え／修正され得る。
【００７６】
上記の方法は、ウェブソフトウェアアプリケーションに関して説明される。しかしながら、ウェブページの代わりに、ｗｅｂｉｆｉｅｒソフトウェアは、加えて、かつ／または代替的に、特定の１つまたは複数のコンピュータ上で直接使用するための独立型のソフトウェアアプリケーションを生成してよく、これにより、ソフトウェアアプリケーションを用いるときのネットワークアクセスの必要性が軽減される。これにより、上記の方法は、カスタムのおよび／または複雑なソフトウェアアプリケーションを作成するのに用いられ得る。「複雑な」アプリケーションは、特に、データ入力、レポート、複数のユーザ、ユーザごとのセキュリティアクセス設定、ワークフロー、自動通知システム、履歴情報の保存、すべてのユーザによる変更のロギング、および／またはファイル添付などの複数の特徴を有するアプリケーションを指す。「カスタムの」アプリケーションは、要件がどれほど独自であっても特定のビジネスのニーズに合わせて構築されたソフトウェアを指し得る。このようなカスタムのアプリケーションの結果は、１つの一般的なことを行うように設計された既製の（アウト・オブ・ボックスの）ソフトウェアではないが、カスタムのアプリケーションでも多くの場合にそれを行うことができる。したがって、ｗｅｂｉｆｉｅｒソフトウェアは、１つの目的に縛られなくてよい。むしろ、ｗｅｂｉｆｉｅｒソフトウェアは、動的で融通性があり、ソフトウェアのプロダクティビティスイートなどの洗練されたソフトウェアアプリケーションを用いる平均スキルを有する誰でも用いることが可能であり、これにより、カスタムのソフトウェア開発者を雇用することに取って代わるものとして作用し得る。
【００７７】
例示的な実装では、システムに少なくとも２つのタイプのユーザまたは人物が存在する。１つは、ｗｅｂｉｆｉｅｒソフトウェアを使用してソフトウェアアプリケーション、ウェブアプリケーション、またはモバイルアプリケーションを設計する１人または複数の、設計者である。もう１つは、最終結果のウェブページを訪問する、結果的に得られる独立型のアプリケーションまたはモバイルアプリケーションを設計者により概ね意図された方法で使用する人（単数または複数）としての、訪問者またはエンドユーザである。
【００７８】
図３Ａは、デスティネーションシステム３５０がＷｅｂｉｆｉｅｒ論理３５３およびメモリ３５１を備える例示的なソフトウェア・アーキテクチャと、ｗｅｂｉｆｉｅｒ  Ａｄｄ−Ｏｎ３５７がインストールされたスプレッドシートクライアントアプリケーション３５４（例えば、ＭＳ  ＥＸＣＥＬ）を描画する。Ａｄｄ−Ｏｎ３５７は、ｈｔｔｐ要求を用いてデスティネーションシステム３５０からそのインターフェースをロードし得る。
【００７９】
図３Ａによりさらに例示されるように、設計者は、スプレッドシートアプリケーション３５４を用いて、馴染みのあるワークシートへのレコードシートおよびテンプレートシートの変更を作成しまたは行い、データの変更が、例えば、ＥｘｃｅｌのＣＯＭ  Ｉｎｔｅｒｏｐライブラリを用いるＡｄｄ−Ｏｎ３５７により観察される３０１ａ。設計者が変更のグループを完了したときに、Ａｄｄ−Ｏｎ３５７は、更新された部分的なまたは代替的にすべてのスプレッドシート定義を、ｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しを用いてデスティネーションシステム３５０のＷｅｂｉｆｉｅｒ論理３５３に送信し得る３０２。Ｗｅｂｉｆｉｅｒ論理３５３は、新しいデータを処理し、メモリ３５１（例えば、ウェブデータストア）に格納されたデータを更新し得る３０３。設計者は、Ａｄｄ−Ｏｎ３５７を用いてデスティネーションページ構成への変更を作成しまたは行い、これはｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しとしてＷｅｂｉｆｉｅｒ論理コントローラ３５３に送信され得る３０２。加えて、設計者は、デスティネーションシステムにアクセスするブラウザ３５５で変更を作成または行い、これはｈｔｔｐ要求またはｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しとしてＷｅｂｉｆｉｅｒ論理コントローラに送信され得る３０１ｂ。
【００８０】
デスティネーションページを提供するための訪問者のブラウザ３５６からＷｅｂｉｆｉｅｒ論理３５３へのｈｔｔｐ  ｇｅｔ要求３０４に応答して、Ｗｅｂｉｆｉｅｒ論理３５３は、メモリ３５１からスプレッドシート定義を取得し得る３０５。Ｗｅｂｉｆｉｅｒ論理は、テンプレートシートからの値および書式設定を評価および参照すること、並びに、テンプレートシートに基づいて識別されるレコードシートからの値を評価および参照することにより、スプレッドシート定義をｈｔｍｌデスティネーションページに変換する。デスティネーションページは、訪問者のブラウザ３５６に送信され得る３０６。図３Ａはさらに、訪問者が見る、テンプレートシートでのみ見受けられ、レコードシートでは見受けられないテキストラベル、ＲｅｃｏｒｄＳｈｅｅｔ！Ａ１から生じるテキストラベル、ＲｅｃｏｒｄＳｈｅｅｔ！Ｃ２の評価からの“１００”の値、およびＲｅｃｏｒｄＳｈｅｅｔ、チェックボックスに関するＲｅｃｏｒｄＳｈｅｅｔ！Ａ２、およびテキストボックスに関するＲｅｃｏｒｄＳｈｅｅｔ！Ｂ２からの値を有するテンプレートシートにより定義されるＨＴＭＬ入力制御を有するページを例示する。図３Ａは、訪問者が、ブラウザ３５６でチェックボックスをチェックし、サブミットをクリックし、結果的にブラウザがｈｔｔｐ  ｐｏｓｔ要求３０７をＷｅｂｉｆｉｅｒ論理コントローラ３５３に送信することを例示する。Ｗｅｂｉｆｉｅｒ論理３５３は、メモリ３０５から現在のスプレッドシート定義をリロードし得る。Ｗｅｂｉｆｉｅｒ論理３５３は、ｐｏｓｔ要求を処理し、メモリ３５１を更新されたスプレッドシート定義で更新する。設計者のＡｄｄ−Ｏｎ３５７が依然としてアクティブなセッションを有する場合、Ｗｅｂｉｆｉｅｒ論理３５３は、更新された部分的スプレッドシート定義、または提示されるスプレッドシート定義を更新するのに十分な変更イベントをＡｄｄ−Ｏｎ３５７に送信し３０８、次いで、ＥｘｃｅｌのＣＯＭ  Ｉｎｔｅｒｏｐライブラリを用いて、Ａｄｄ−Ｏｎ３５７は、設計者のワークシートがセルＡ２に“ｔｒｕｅ”を表示することになるように、更新されたバージョンをスプレッドシートアプリケーション３５４で設計者に提示し得る３０９。
【００８１】
図３Ｂは、タイト・インテグレーションという名称のセクションでより詳細に後述する、スプレッドシートとＷｅｂｉｆｉｅｒ論理とのタイト・インテグレーションを用いる代替的な例示的なソフトウェア・アーキテクチャを描画する。
【００８２】
ここで、本明細書で説明される１つまたは複数の例示的な態様に係るスプレッドシートに基づくソフトウェアアプリケーション開発システムの例示的なスクリーンショットを示す図４〜図９８をさらに参照しながら、ｗｅｂｉｆｉｅｒシステムの例示的な態様に関するさらなる詳細を以下でより詳しく説明する。描画されたスクリーンショットは本質的に例示的なものであって、本明細書で説明されるどの態様の範囲を限定することも意図していない。例示的なスクリーンショットは、ｗｅｂｉｆｉｅｒを特定のスプレッドシートアプリケーションと共にまたは任意の特定のシステムアーキテクチャと共に用いることに限定することを意図していない。むしろ、スクリーンショットは、ローカルのスプレッドシートアプリケーションまたはクラウドベースのスプレッドシートアプリケーションのいずれと共に用いられるかに関係なく、ｗｅｂｉｆｉｅｒシステムの種々の特徴および能力を例示する。
【００８３】
図４〜図１０は、Ｗｅｂｉｆｉｅｒに特異的な利用可能な式関数を有するＡｄｄ−Ｏｎがインストールされたスプレッドシートアプリケーションのスクリーンショットである。
【００８４】
図１１は、訪問者がそのページを訪問するときに見ることができるデスティネーションページのポップアップサムネイルプレビューを示すＡｄｄ−Ｏｎのページリストのスクリーンショットである。
【００８５】
図１２は、Ａｄｄ−Ｏｎがインストールされたスプレッドシートアプリケーションのスクリーンショットであり、この場合、スプレッドシートアプリケーションのツールバーに付加的なメニューが追加されており、ユーザがログインしており、利用可能なｗｅｂ−ａｐｐのリストと共にスプレッドシートアプリケーション側のフレーム内にＡｄｄ−Ｏｎインターフェースが示されている。
【００８６】
図１３は、Ａｄｄ−Ｏｎがインストールされたスプレッドシートアプリケーションのスクリーンショットであり、この場合、スプレッドシートアプリケーションのツールバーに付加的なメニューが追加されており、ユーザがログインしておらず、ログインページが示されている。
【００８７】
図１４は、Ａｄｄ−Ｏｎがインストールされたスプレッドシートアプリケーションのスクリーンショットであり、この場合、セルの右クリックメニューに付加的なメニューオプションが追加されている。
【００８８】
図１５は、ゲーミフィケーションのユーザ通知ポップアップのスクリーンショットである。
【００８９】
図１６は、ａｐｐのソースにより編成されるｗｅｂ−ａｐｐのリストのスクリーンショットである。
【００９０】
図１７は、ｗｅｂ−ａｐｐのリスト上の１つのａｐｐに関するアクティブ化されたアクションメニューのスクリーンショットである。ｗｅｂｉｆｉｅｒは、図２１のようにｗｅｂ−ａｐｐパーミッションが所有設計者により制限されたために、利用可能なａｐｐ操作を制限している。
【００９１】
図１８は、現在選択されたａｐｐ“Ｔｅｓｔ−Ｃｏｐｙ”に関するページの空リストのスクリーンショットである。
【００９２】
図１９は、ｗｅｂ−ａｐｐのリスト上のアクティブ化された“Ａｐｐ  Ｉｎｆｏｒｍａｔｉｏｎ”ダイアログのスクリーンショットであり、具体的なｗｅｂ−ａｐｐについての要約情報が示されている。
【００９３】
図２０は、Ｒｅｐｏｒｔページにおいてレコードソースとして参照される伝統的なスプレッドシートテーブルを含むソーススプレッドシート定義と、スプレッドシート定義を用いて定義された結果的に生じるデスティネーションページを例示する図である。この図はさらに、具体的なログイン訪問者“Ｈａｌｅｅ”に関して、ｗｅｂｉｆｉｅｒがレコードセットを行２のみに絞り込んだことを例示し、この場合、デスティネーションシステム上で評価されるときにセルＡ２がログインユーザ名と一致し、スクリーンショットの右上で見られる式“＝ＩＳＬＯＧＧＥＤＩＮＷＥＢＵＳＥＲ（Ａ２）”がｔｒｕｅを返している。この図はまた、関数ＩＳＬＯＧＧＥＤＩＮＷＥＢＵＳＥＲが、設計時間中に交代プレースホルダ値を返したが、デスティネーションページをレンダリングするときにログイン訪問者が既知であったときに適正に評価したことを例示する。
【００９４】
図２１は、他のユーザと共有されているａｐｐのスクリーンショットであり、設計者は、追加の設計者がそのｗｅｂ−ａｐｐに関して有することになるパーミッションを指定している。
【００９５】
図２２は、テンプレートを新しい修正可能なｗｅｂ−ａｐｐへシングルクリックコピーするオプションを有するテンプレートメニューのスクリーンショットである。
【００９６】
図２３は、スプレッドシートアプリケーションで新しいスプレッドシートを作成した後でアップロードオプションをクリックしたユーザのスクリーンショットであり、ここでは、新しいａｐｐに名前をつけるべくアップロードダイアログが提示されており、名前は、先に作成したスプレッドシートファイルの名前にデフォルト設定される。
【００９７】
図２４は、“ＡＰＩ＿Ｐａｇｅ”という名前のデスティネーションページに関するＳｈａｒｅｓタブのスクリーンショットであり、設計者は、該ページ並びに該ページへのアクセスを許されたユーザのリストにアクセスするのにログインが要求されるかどうかを指定している。
【００９８】
図２５は、ユーザを該ユーザの電子メールアドレスに基づいて該ページへのアクセスを許されたユーザのリストに追加するべくＳｈａｒｅｓタブから開かれたダイアログのスクリーンショットである。
【００９９】
図２６は、ＡＰＩタイプのページが定義されているスクリーンショットであり、これは、プログラムでアクセスすることができるｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩページを作成し、設計者により指定される特定のＩｎｓｅｒｔページに対応する入力を有する。
【０１００】
図２７は、Ｃａｌｅｎｄａｒタイプのページが定義されているスクリーンショットである。スプレッドシートは、レコードシートを示し、サムネイルは、訪問者が見ることになる複雑な制御を例示する。範囲制御は、レコードシート上の適切な列に設定される。
【０１０１】
図２８は、Ｃａｌｅｎｄａｒタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。
【０１０２】
図２９は、ＣｏｎｔａｉｎｅｒタイプのページがＥａｓｙモードで定義されているスクリーンショットである。
【０１０３】
図３０は、ＣｏｎｔａｉｎｅｒタイプのページがＡｄｖａｎｃｅｄモードで定義されているスクリーンショットである。
【０１０４】
図３１は、ＣｏｎｔａｉｎｅｒタイプのページがＧｒａｐｈｉｃ  Ｄｅｓｉｇｎｅｒモードで定義されているスクリーンショットである。
【０１０５】
図３２は、Ｃｏｎｔａｉｎｅｒタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。
【０１０６】
図３３は、ＣＳＶ  Ｉｍｐｏｒｔタイプのページが定義されているスクリーンショットである。サムネイルは、ページの訪問者に提示されることになる複雑な制御の組を実証し、ソースは、名前によりワークシート全体に設定される。
【０１０７】
図３４は、ＣＳＶ  Ｉｍｐｏｒｔタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。
【０１０８】
図３５は、Ｄｅｔａｉｌｓ  Ｒｅｐｏｒｔタイプのページが定義されているスクリーンショットであり、設計者は、名前付き範囲／Ｄｅｆｉｎｅｄ  Ｎａｍｅに基づくテンプレートシートを選択している。このスクリーンショットは、テンプレートソースの参照のための種々のオプションを示している。
【０１０９】
図３６は、Ｄｅｔａｉｌｓ  Ｒｅｐｏｒｔタイプのページが定義されているスクリーンショットであり、設計者は、スプレッドシートツールのセルから選択されているＢ９：Ｃ１２のカスタム範囲に基づくテンプレートシートを選択しており、この場合、設計者はテンプレート定義セクションにおいて“ｕｓｅ  ｓｅｌｅｃｔｅｄ”ボタンをクリックした。
【０１１０】
図３７は、Ｄｅｔａｉｌｓ  Ｒｅｐｏｒｔタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。このスクリーンショットはまた、スプレッドシートツールのセル上の薄緑色のオーバーレイ、並びに、テンプレート定義内で用いるために設計者が利用可能な機能のリスティングを例示する。機能の詳細は図４〜図１０で定義される。
【０１１１】
図３８は、Ｅｄｉｔ−Ｃｅｌｌｓタイプのページが定義されているスクリーンショットである。
【０１１２】
図３９は、Ｅｄｉｔ−Ｃｅｌｌｓタイプのページを定義するのに利用可能な付加的なオプションのスクリーンショットである。このスクリーンショットはまた、ヘッダ範囲（Ｈｅａｄｅｒ  Ｒａｎｇｅ）が、スプレッドシートツールにおける現在選択されたＢ１：Ｃ１セルに基づくカスタム範囲により定義されていることを例示する。
【０１１３】
図４０は、Ｅｄｉｔ−Ｃｅｌｌｓタイプのページに関するヘッダ範囲を定義するための種々のオプションのスクリーンショットである。
【０１１４】
図４１は、Ｅｄｉｔ−Ｒｅｃｏｒｄタイプのページが定義されているスクリーンショットであり、設計者は、各行が異なるレコードを表すように、ソースレコードシートの配向が行に基づくことを指定している。
【０１１５】
図４２は、Ｅｄｉｔ−Ｒｅｃｏｒｄタイプのページが定義されているスクリーンショットであり、設計者は、ページオプションなどのより多くのオプションを選択し、カスタムヘッダ範囲を指定し、ドロップダウンメニューから編集可能範囲を選択している。
【０１１６】
図４３は、Ｉｎｓｅｒｔタイプのページが定義されているスクリーンショットであり、サムネイルは、デスティネーションページの訪問者によって見られ得る、自動的に生成されるｈｔｍｌフォームのプレビューを例示している。
【０１１７】
図４４は、Ｉｎｓｅｒｔタイプのページに関する種々のオプションのスクリーンショットである。これはさらに、ｗｅｂｉｆｉｅｒがサポートするデータバリデータのうちのいくつかを例示する。
【０１１８】
図４５は、Ｌｉｎｋタイプのページが定義されているスクリーンショットであり、サムネイルは、生成されることになるハイパーリンクのプレビューを例示しているが、式関数は、実際の値ではなくプレースホルダ値を示しており、リンクのクリック時に訪問者が向けられることになるデスティネーションの場所は、特異的なＣａｌｅｎｄａｒデスティネーションページとして指定される。
【０１１９】
図４６は、ＰＤＦタイプのページが定義されているスクリーンショットであり、サムネイルは、ＰＤＦのための基礎として以前に作成したＩｎｓｅｒｔデスティネーションページを設計者が選択することに基づいて生成されることになるＰＤＦに埋め込まれるフォームを有するＰＤＦのプレビューを例示している。
【０１２０】
図４７は、Ｒｅｐｏｒｔタイプのページが定義されているスクリーンショットであり、この場合、レポートは、別個に定義されたテンプレートシートを有さない。サムネイルは、行レコードシートが、結果的に、行レコードシートのセルと同じ書式設定を有するレコードのすべてをリストアウトするデスティネーションページを生じることを例示する。
【０１２１】
図４８は、Ｒｅｐｏｒｔタイプのページが定義されているスクリーンショットであり、設計者は、ヘッダ範囲、自動リフレッシュ時間、およびページオプションなどのより多くのオプションを選択している。
【０１２２】
図４９は、Ｔａｂｓ  Ｃｏｎｔａｉｎｅｒタイプのページが定義されているスクリーンショットであり、この場合、設計者は、タブ内に含まれるべき２つの以前に作成したデスティネーションページを選択した。サムネイルは、ページの最上部に２つの視覚タブを有することになるデスティネーションページを例示し、各タブは、コンテンツのための基礎として以前に作成したページのうちの１つを有している。
【０１２３】
図５０は、Ｔｅｘｔタイプのページが定義されているスクリーンショットであり、この場合、設計者は、ＷＹＳＩＷＹＧエディタを用いてリッチテキストを入力することができる。
【０１２４】
図５１は、設計者からのページ追加要求を受信後に追加されるべきページのタイプに関するオプションを提示するシステムのスクリーンショットである。
【０１２５】
図５２は、ｗｅｂｉｆｉｅｒがスプレッドシートでチャートが利用可能であることを自動的に検出したことによる、Ｒｅｐｏｒｔタイプのページが定義されているスクリーンショットであり、ｗｅｂｉｆｉｅｒは、Ｒｅｐｏｒｔデスティネーションページ上に表示することができるチャートのドロップダウンリスティングを表示する。
【０１２６】
図５３は、Ａｄｄ−Ｏｎが、訪問者からの変更が受信および検出されており、自動的にダウンロードされることになるかまたは設計者がそれらを所望の時点で取得するべくダウンロードデータをクリックすることができることをデスティネーションシステムにより通知されているスクリーンショットである。
【０１２７】
図５４は、ページリストのスクリーンショットであり、この場合、設計者は、ページに関するアクションメニューをクリックしており、Ａｄｄ−Ｏｎは、ページの複製または削除などのデスティネーションページに関するサポートされる操作オプションを提示している。
【０１２８】
図５５は、Ａｄｄ−Ｏｎがｗｅｂ−ａｐｐの複製などのｗｅｂ−ａｐｐ全体に関する種々の操作オプションを有するページリスティング内からのｗｅｂ−ａｐｐアクションメニューを表示しているスクリーンショットである。
【０１２９】
図５６は、ｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しに関する典型的な使用および要求フォーマットを実証する、外部システムまたはＡｄｄ−Ｏｎに利用可能なデスティネーションシステムｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ関数呼び出しに関する例示的なドキュメンテーションである。
【０１３０】
図５７は、デスティネーションＲｅｐｏｒｔページのスクリーンショットであり、Ｒｅｐｏｒｔページタイプの結果が、左に行レコードがリストされ、最上部にいくつかのリンクを有し、且つチャットをポップアップするべく右にクリック可能なアイコンを有するレイアウトを定義するべくテンプレートシートを用いて定義されていることを例示する。
【０１３１】
図５８は、デスティネーションシステムが、チャットレコードを取得し、チャットオブジェクトが訪問者によりアクセスされた後で新しいチャットを入力することを訪問者に促しているスクリーンショットである。
【０１３２】
図５９は、例示的なスプレッドシートのスクリーンショットであり、この場合、チャットオブジェクトが、どんなグループのチャットレコードが該チャットオブジェクトと関連付けられるかを示すべく、式関数とパラメータとしてパスインされるＧＵＩＤで作成されている。この例では、設計時間中にセルに示される可視のプレースホルダテキストは、パスインされるＧＵＩＤである。
【０１３３】
図６０は、例示的なスプレッドシートのスクリーンショットであり、いくつかの外部補足データオブジェクト：チャット、ファイル、およびイメージオブジェクトをスプレッドシート内でどのように用いることができるかを例示している。このスクリーンショットは、ファイルに関するＧＵＩＤまたはイメージが挿入されないときの＃Ｎｏｎｅの場合のようにプレースホルダテキスト、またはサイズを示すファイルオブジェクトに関する“１０ＫＢ”の場合のように式関数（例えば、図５）へのパラメータとして指定される他のキャプションがどのように存在し得るかを例示する。これはまた、このケースではＥ７とＦ７の２つのセルがどのようにして同じ外部データオブジェクトを指すことができるかを例示する。
【０１３４】
図６１は、図６０のスプレッドシートから作成することができるデスティネーションＲｅｐｏｒｔページのスクリーンショットである。このページは、どのようにしてプレースホルダテキストが対話型チャットオブジェクトと置き換えられるか、および、セルＥ７およびＦ７がここでは該ページが外部補足データオブジェクトの複数の属性を示すことを可能にすることを例示する。
【０１３５】
図６２は、図６１におけるデスティネーションＲｅｐｏｒｔページがブラウザからのアップロードダイアログによって付加的なイメージファイルを受け入れる能力を有することのスクリーンショットである。このスクリーンショットはまた、デスティネーションページ上のイメージオブジェクトとの対話により制御が簡潔なテキストラベルからファイルを選ぶのに適切なものへ変更されることと、システムが、訪問者がアップロード先のファイルビンを変更することを可能にする、イメージオブジェクトの式を訪問者が変更することに関するパーミッションを設計者が指定することをサポートすることを例示する。
【０１３６】
図６３は、訪問者がデスティネーションページを介してイメージをイメージオブジェクトにアップロードした後の、該イメージオブジェクトに関する現在格納されたイメージを表示する、図６１におけるデスティネーションＲｅｐｏｒｔページのスクリーンショットである。
【０１３７】
図６４は、式関数へのパラメータがＧＵＩＤではなく任意のテキスト文字列である場合の、図６０における例示的なスプレッドシートのスクリーンショットである。
【０１３８】
図６５は、設計者がデスティネーションシステムへの接続を許されるプログラムのまたは自動のクライアント、および該クライアントがそれを行うのにどんな認証パラメータが必要とされるかを指定することを可能にするデスティネーションシステム管理ページのスクリーンショットである。
【０１３９】
図６６は、ｗｅｂ−ａｐｐの“Ｔｉｍｅｓｈｅｅｔ”からドロップダウンする他のページのナビゲーションメニューを有するデスティネーションシステムページのスクリーンショットである。
【０１４０】
図６７は、ｗｅｂ−ａｐｐがレコードシートとテンプレートシートとの両方のスプレッドシート定義並びに共有設定および通知設定を含む単一の自己完結型のファイルとしてエクスポートされることを可能にする、デスティネーションシステム管理ページのスクリーンショットである。
【０１４１】
図６８は、スプレッドシート定義のアップロードを可能にする、デスティネーションシステム管理ページのアップロードダイアログのスクリーンショットであり、図６７からエクスポートされた情報をインポートする同じオプションを有する。
【０１４２】
図６９は、ｗｅｂ−ａｐｐのリスト上の１つのａｐｐに関するアクティブ化されたアクションメニューのスクリーンショットである。図１７とは異なり、ｗｅｂｉｆｉｅｒは、設計者がｗｅｂ−ａｐｐ上の適切なパーミッションを有するので、“ａｄｄ  ｐａｇｅ”などの付加的な操作へのアクセスを提供している。
【０１４３】
図７０〜図７３は、それぞれ図４３、図４５、図４７、および図５０によく似ているが、Ａｄｄ−Ｏｎまたは第三者スプレッドシートツールの必要なしに、設計者がＩｎｓｅｒｔタイプ、Ｌｉｎｋタイプ、Ｒｅｐｏｒｔタイプ、およびＴｅｘｔタイプのページを定義することを可能にする、デスティネーションシステム管理ページのスクリーンショットである。
【０１４４】
図７４は、テーブルが列Ｃの値に基づいてスプレッドシートレコードをフィルタする制御を有することができることを例示し、列Ｈ上の日付式などの式を用いるスプレッドシートレコードの付加的なフィルタリングを例示する、伝統的なスプレッドシートテーブルのスクリーンショットである。
【０１４５】
図７５は、任意の外部ＵＲＬへのウェブページのページタイプをサポートし、必ずしもＵＲＬだけでなく様々な可能性あるソースを可能にする、デスティネーションシステム管理ページのスクリーンショットである。
【０１４６】
図７６は、ｗｅｂｉｆｉｅｒの深くネストされたコンテナを有する能力を例示する、デスティネーションシステム管理ページのスクリーンショットである。
【０１４７】
図７７は、デスティネーションシステム管理ページからの編集能力を有する、Ｅｄｉｔ−Ｒｅｃｏｒｄタイプのページに関するデスティネーションシステムがサポートするいくつかの付加的なオプションのスクリーンショットである。
【０１４８】
図７８は、Ａｄｄ−Ｏｎではなくデスティネーションシステム管理ページからオプションを編集する能力を有する、Ｉｎｓｅｒｔタイプのページに関するデスティネーションシステムがサポートする、図４４で見られるものと類似した、いくつかの付加的なオプションのスクリーンショットである。
【０１４９】
図７９は、デスティネーションシステムが他の方法でデータ検証として知られているユーザ入力を制約するオプションを提供することを例示するスクリーンショットであり、この場合、データ検証ルールは、格納されるデータ値のタイプに特異的とすることができる。
【０１５０】
図８０は、デスティネーションシステムがスプレッドシート定義におけるセルの範囲を参照するデータ検証ルールの一部と共にユーザ入力を制約するオプションを提供することを例示するスクリーンショットである。この例では、システムは、シート全体またはシート内のカスタムのセルの範囲をサポートする。
【０１５１】
図８１は、範囲外のものはすべて編集可能ではないように種々のタイプのページ内の編集可能な範囲を修正することのデスティネーションシステムのサポートのスクリーンショットである。これは、“Ｅｖｅｒｙｔｈｉｎｇ”、名前付き範囲、並びに設計者により指定されるカスタム範囲を用いるなどのエイリアスのサポートを例示する。
【０１５２】
図８２は、任意の外部サイトページ内に埋め込み型デスティネーションページを有するためにデスティネーションシステムが自動的に生成することができるＨＴＭＬコードの例である。
【０１５３】
図８３は、外部自動化システムへの通知および複数のタイプの通知のためのｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しをサポートする、通知設定に関する種々のオプションを例示する、デスティネーションシステムの通知設定ページのスクリーンショットである。
【０１５４】
図８４は、デスティネーションシステムの特定の通知に関する構成オプションのスクリーンショットである。これは、設計者により指定されるＵＲＬによるそのｗｅｂｈｏｏｋ能力、並びに、電子メール能力を例示する。
【０１５５】
図８５は、デスティネーションシステムの特定の通知の電子メールテンプレートに関する構成オプションのスクリーンショットである。
【０１５６】
図８６は、デスティネーションＣＳＶ  Ｉｍｐｏｒｔページのスクリーンショットであり、ｗｅｂｉｆｉｅｒが、インポート中にＣＳＶファイルを受け入れ、スプレッドシートを分析することによりそれがリンクされるレコードシートについてのメタデータを利用することができ、レコードシートへの挿入要求のステータスを報告することができることを例示する。
【０１５７】
図８７は、図８６のようなデスティネーションＣＳＶ  Ｉｍｐｏｒｔページのスクリーンショットであるが、システムが、ＣＳＶ  Ｉｍｐｏｒｔフォームを介してデータが到着するときにデータ検証ルールを実施し、その失敗を報告することができることを例示する。
【０１５８】
図８８は、デスティネーションＥｄｉｔ−Ｃｅｌｌｓページのスクリーンショットであり、図３８に例示されたＡｄｄ−Ｏｎインターフェースから定義されているＥｄｉｔ−Ｃｅｌｌｓページタイプの結果と、ユーザの対話の結果として“ｅｄｉｔ  ｍｏｄｅ”に切り替える任意のセルに関して変更しているデスティネーションページの制御を例示する。
【０１５９】
図８９は、デスティネーションＥｄｉｔ−Ｒｅｃｏｒｄページのスクリーンショットであり、定義されているＥｄｉｔ−Ｒｅｃｏｒｄページタイプの結果、行の削除の結果としてのユーザへの動的通知メッセージ、およびデスティネーションシステムが“Ｅｄｉｔ”パーミッションおよび“Ｄｅｌｅｔｅ”パーミッションが有効であると決定し、ページ定義がこれらのオプションを有効にしたときのテンプレートシート定義を修正する制御を例示する。
【０１６０】
図９０は、図８９の“Ｅｄｉｔ  Ｒｏｗ”ボタンが訪問者によりクリックされているときのデスティネーションＥｄｉｔ−Ｒｅｃｏｒｄページのスクリーンショットであり、テンプレートシートが定義されていないときに用いられる自動的に生成される入力フォームを例示し、該入力フォームが、スプレッドシート定義によりオプションが定義される場合のドロップダウンなどの制御を有することができることを例示する。
【０１６１】
図９１は、訪問者がフォームに任意のフィールドを記入する前のデスティネーションＩｎｓｅｒｔページのスクリーンショットであり、サブミットがレコードシートを修正したことを確認する訪問者への通知を例示し、デスティネーションページがデータ検証ルールに基づいてデフォルト値を有するフィールド並びに編集不可フィールドを提示し得ることを例示する。
【０１６２】
図９２は、訪問者が、スプレッドシート定義の関連するセルデータタイプが日付に設定されるフィールドに関するデータを入力するときの、図９１のようなデスティネーションＩｎｓｅｒｔページの訪問者に表示される複雑な対話型制御のスクリーンショットである。
【０１６３】
図９３は、訪問者に失敗を知らせるためのインターフェースへの修正を例示する、訪問者が入力データ検証ルールに失敗した後のデスティネーションＩｎｓｅｒｔページのスクリーンショットである。
【０１６４】
図９４は、サーバ上の管理パーミッションを有する設計者が、特定のロールに関するデスティネーションシステムの管理特徴に関係するアクセスパーミッションを制御することを可能にする、デスティネーションシステム管理ページのスクリーンショットであり、ロールがカスケーディング・パーミッションをもつサブロールを有する能力をさらに例示する。
【０１６５】
図９５は、デスティネーションシステムの種々の粒度が細かい管理パーミッションを例示する、デスティネーションシステム管理ページのスクリーンショットである。
【０１６６】
図９６は、訪問者がデスティネーションシステムにログインするまたはアカウントを作成するための、多数のオプションを有する複雑なパスワードポリシーが可能であることを例示する、デスティネーションシステム管理ページのスクリーンショットである。
【０１６７】
図９７は、スプレッドシートで設計されるソーススプレッドシート定義を例示する図であり、訪問者のために生成されるデスティネーションページ上の内容の書式設定を定義するべく、設計者により多数の書式設定オプションが指定されている。
【０１６８】
図９８は、３つのページタブを有するタブコンテナを含む複雑なデスティネーションページのスクリーンショットであり、第１のページタブは、入力ページ、レポートページ、およびそのソースがチャートであるレポートページから自動的に生成される入力フォームを含む複数のネストされるページをもつネストされるコンテナページを有している。
【０１６９】
スプレッドシートおよびレコード
単に例示的な参照のために、スプレッドシートの２つの使用スタイルが本明細書で言及される。他のスタイルが代替的に用いられ得る。１つ目は、各レコードがシート全体または多くのシートを危険にさらすファイル全体を備えるシートレコードである。例えば、多くの会社は、作成する販売見積書毎に新しい販売見積書スプレッドシートファイルを保存する。該ファイルは、バックエンド計算に関する１つのシートと印刷可能な見積書を有することを意図する１つのシートなどのいくつかのシートを有する場合があり、印刷可能な見積書シートは、典型的に、すべて該単一の見積書を表す、テキスト、数字、および結果がテキストまたは数字となる式を含む、多くの行および列を有することになる。それらはまた、公正に読み出し可能なプリントアウトを可能にするのに十分な書式設定を含み得る。
【０１７０】
２つ目は、通常は単一シート内で多くのレコードが一緒に指定される、行レコードおよび行レコードシートである（例えば、図５３の列Ａ〜Ｄ）。スプレッドシートファイルは、ゼロ、１つ、および／または複数の行レコードシートを有することができる。行レコードシートは、シートの一部（例えば、図６０の列Ａ〜Ｂ）のみに限られる場合があり、該シートはその上に付加的な行レコードシートまたは関連のないデータ（例えば、図６０の列Ｅ）を有し得るが、簡単にするために、本発明者らは、全体を通して、これを依然として行レコードシートとして言及する。例えば、多くの会社は、以下のようなクライアントをリストするスプレッドシートを有することになる。シートは、“Ｃｌｉｅｎｔ”および“Ｉｎｄｕｓｔｒｙ”および“Ｃｌｉｅｎｔ  ＩＤ”などのいくつかの列名をもつ最上行１を有し得る。その下の各行は、単一クライアントに関係したデータを有し得る。例えば、行２は、列Ａに“Ｐｌｅａｓａｎｔ  Ｓｏｌｕｔｉｏｎｓ”、列Ｂに“Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｓｅｒｖｉｃｅｓ”、および列Ｃに“１”を有し得る。行３は、列Ａに“ＮｅｗＣｏ”、列Ｂに“Ｃｏｎｓｕｌｔｉｎｇ”、および列Ｃに“２”を有し得る。名前にかかわらず、行レコードはまた、レコードが列レコードであるかのように左から右にリストされるように行および列がフリップされる目的を有するリストを表す。
【０１７１】
ステップ２０１〜２０３中に、上記のいずれかまたは両方の技術が用いられてよく、これにより、ｗｅｂｉｆｉｅｒソフトウェアが、あらかじめ定められたまたは事前に暗示された目的をもたない、複雑な、マルチユーザの、完全にカスタムのデスティネーションソフトウェアを作成するのに用いられることが可能となる。独立型のウェブまたはモバイルアプリケーション（ウェブおよびモバイルは、便宜のため総称して「ｗｅｂ−ａｐｐ」と呼ばれる場合がある）は、プログラミングまたはデータベース経験の必要なしに作成され得る。本明細書で説明されるいくつかの態様は、データ、カスタムのユーザインターフェース、異なる閲覧デバイス能力、同時使用、データおよびユーザワークフロー、自動通知、スケジュールされたイベント、ビジネス論理などを含む複雑なシナリオに関してでさえも、カスタムのソフトウェア開発会社を雇用する必要性に取って代わることを意図し得る。
【０１７２】
テンプレートシート
ここで、例示的な実装を参照してユーザインターフェース・テンプレートに関してステップ２０１および２０５をより詳細に説明する。伝統的なスプレッドシートアプリケーション、クラウドおよびウェブベースのスプレッドシート、またはウェブアプリケーション内に埋め込まれた簡易化されたスプレッドシート・インターフェースのいずれで行われるかに関係なく、スプレッドシートツールは、訪問者またはレポートレイアウトに関する所望のユーザインターフェースを表すスプレッドシートを作成するのに用いられ得る。例えば、テンプレートは、単一の見積書に適切であろう値および式を含む多くの行および列を有する１つのシートを有することもできる：最上部付近にクライアントの大きいフォントテキストタイトル、その後に“Ｉｎｖｏｉｃｅ  Ｎｕｍｂｅｒ”として第１の値を有する行、およびその右に実際のインボイスナンバーを表示することを意図されるセル。その下のいくつかの行は、コメントをイタリック体で表示することを意図された、複数の行および列にわたるセルを有し得る。シートの最下部付近に“Ｓｕｂｔｏｔａｌ”とラベル付けされるセル、その右に、該特定のインボイスの合計を表す数字を有することを意図された、“＄”記号で通貨を指定するセル書式設定を有するセル（このとき該セルはグリッド上のＣ１５の位置を有する）。次の行は、税および税の後に合計に関係したセルを有し得るが、後でそこに配置される値を有することを意図するのではなく、税および合計セルは、“＝Ｃ１５＊１０％”などの小計セルの場所を参照するスプレッドシート式を有することになり、この場合、Ｃ１５への変更は、これらの式に基づく合計に影響を及ぼすことが意図される。
【０１７３】
テンプレートシートは、親テンプレートとネストされるテンプレートとの多対多の関係性でおよび／またはいくつかの深さレベルになどでネストされ得る（図７６）。一態様によれば、ｗｅｂｉｆｉｅｒソフトウェアは、セル範囲参照またはどんなテンプレートシートが用いられるべきであるかに関するテンプレート識別子を受け入れる“ＵＳＥＴＥＭＰＬＡＴＥ（）”などのスプレッドシート式関数を定義し得る。式が用いられるセルは、セルのサイズに基づいてネストされるテンプレートに割り当てられるセルの場所、または幅および高さに基づいて、ネストされるテンプレートシートをどこに挿入するかなどの特定の情報を暗黙的に提供し得る。テンプレートにポピュレートするためのソースレコード（単数または複数）が親テンプレートと同じではない場合、パラメータをＵＳＥＴＥＭＰＬＡＴＥ関数にパスインすることもでき、これは、（さらに後述するように）ネストされていないテンプレートシートがいくつかのページタイプに関してするのとほぼ同じように、ソースデータが何であるかをテンプレートが知ることを可能にすることになる。これは、異なるレコードシート上のレコードからポピュレートされる必要がある“ｉｎｖｏｉｃｅ  ｉｔｅｍｓ”のリストをその内部に含むインボイステンプレートなどのシナリオを可能にする。典型的に、このようなネストされるテンプレートシートは、親テンプレートの行または列のアラインメントに影響を及ぼさずに十分な幅および高さを表示することを可能にするのに伝統的なスプレッドシートの“ｍｅｒｇｅ  ｃｅｌｌｓ”特徴、並びに、特定のインボイスに属するこれらのインボイスアイテムのみへのレコードのフィルタリング（以下で説明される）を提供するのに伝統的なテーブル特徴を利用することになる。
【０１７４】
ｗｅｂｉｆｉｅｒソフトウェアは、テンプレートシートのセルが、該テンプレートシート内の他のセル、他のテンプレートシート内のセル、レコードシートデータ、または同じセル内の上記のすべての組み合わせを参照する式を有することを可能にし得る。説明した技術はまた、基礎をなすソース参照が同一であるまたは部分的に重複する場合であっても、デスティネーションシステムの訪問者が同時に利用できるようにするために、１つまたは複数のテンプレートが入力機能のために用いられることおよび１つまたは複数の異なるテンプレートが出力機能のために用いられることを可能にする。式は、通常、本質的に宣言であるが、任意のスプレッドシートツールおよび／または新しいフォーマットまたは構文によりサポートされる任意の１つまたは複数の式が用いられ得る。
【０１７５】
レコード式（ＴＥＭＰＬＡＴＥ  ＩＮＤＩＣＡＴＯＲＳ）を有するまたはシートデータを参照するシートテンプレート
スプレッドシートツールでテンプレートシートを設計している間、特定のレコードまたは多くのレコードから導出される集計値を表すことを意図しているセルは、ブランクと評価され得るおよび／または設計者に書式設定を示すこと以外のシステムへの影響を有さないプレースホルダ値を有し得る。外部リストまたはデータベースは、Ｃ１５などのセルの場所の相互参照と、インボイスの小計を表示するなどのそれらの意図された目的を含み得る。代替的に、テンプレートシートからレコードシートセルが参照可能である場合、レコードを指すこれらのセルに式またはプレースホルダ式を挿入することができる。例えば、テンプレート上のクライアントタイトルセルは、“＝ＣｌｉｅｎｔＬｉｓｔ！Ａ１”であり、これはもしかするとプレースホルダとして設計時間中にスプレッドシートツールによってテキスト“Ｃｌｉｅｎｔ”へ評価されることになり、またはおそらく、この式は、“＝ＣｌｉｅｎｔＬｉｓｔ！Ａ２”であって、これはもしかするとプレースホルダとして設計時間中に“Ｐｌｅａｓａｎｔ  Ｓｏｌｕｔｉｏｎｓ”としてスプレッドシートツールによって分解されることになる。加えて、“＝ＣｌｉｅｎｔＬｉｓｔ！Ａ：Ａ”または”＝ＣｌｉｅｎｔＬｉｓｔ！Ａ１：  Ａ１０００”を参照し、結果的に、結果的に、ブランク、エラー、または意図せぬ値を生じることがある。上記のケースのそれぞれにおいて、設計時間中に結果を生じるテキストは、設計時のプレースホルダにすぎず、訪問者に関するなどの後の時点での実際の評価中にｗｅｂｉｆｉｅｒを支援するためにＣｌｉｅｎｔＬｉｓｔ上のどの列がテンプレートに記入する際に用いられるべきかの有用な情報を有する式自体ほど重要ではない。便宜上、この概念は、概してＴｅｍｐｌａｔｅ  Ｉｎｄｉｃａｔｏｒと呼ばれることがある。
【０１７６】
Ｔｅｍｐｌａｔｅ  Ｉｎｄｉｃａｔｏｒ式は、設計者がタイプするまたはデータの利用可能なまたは関連する列のリストからドラッグおよびドロップすることから導出することもできる。この式は通常、スプレッドシートツールのセル参照（“ＣｌｉｅｎｔＬｉｓｔ！Ａ１”または指定されたテーブルの場合、“ＣｌｉｅｎｔＬｉｓｔ！Ｃｌｉｅｎｔ”）、この目的のために特化されたアクションをトリガする典型的な関数呼び出し構文（“＝ＧｅｔＲｏｗＲｅｃｏｒｄＤａｔａ（“Ｃｌｉｅｎｔ”）”）とすることができるか、またはそれらは“［［Ｃｌｉｅｎｔ］］”などの特化された別個の式とすることができる。式は、スプレッドシートに典型的なようにセルに格納されてよく、またはそれらは、それらがどんなセル上に適用されるかについての情報と共に、式の特別な外部リストに格納することもできる。
【０１７７】
複数のデータソース
設計者がレコードの一次セットを行レコードシートに持つことと、別のシート（二次データソース）の１つまたは多くの「二次レコード」を持つことを望む場合、レコードセット間の多くの種類の関係が可能である。設計者が１つまたは複数の二次データソースを指定するとき、ｗｅｂｉｆｉｅｒは、テンプレートシート内で見出された参照をどのようにポピュレートするかを決定するために、設計者から関係の種類を決定するための付加的な情報を要求し得る。
【０１７８】
テンプレートをポピュレートする選択された一次レコードが変化し得るとしても、潜在的に変化しない、二次データソースからの単一のレコードのみがテンプレートによって使用される場合、システムは、設計者がテンプレートによって使用される二次データソースから単一の二次レコードを選択するための１つまたは複数の基準を指定することを可能にし得る。例えば、レコードの一次セットがインボイスのリストであり、テンプレートが訪問者が選択した任意の特定のインボイスの提示である場合、「ロゴ」シートからの二次データソースは、設計者によって指定されて、インボイスを発行する会社と共にテンプレートを装飾するための会社名およびロゴを提供し得、基準は、「インボイスロゴ」である必要がある二次列Ａに設定され、１つのレコードのみがロゴシートから使用されるようにする。
【０１７９】
基準は、テンプレートが行うのと同じ方法で一次データソースからのデータを参照するか、または一次データソースを参照するテンプレート上のセルを間接的に参照することによって、選択された一次レコードに基づいてもよい。例えば、インボイステンプレートは、「フラグ」シートからの二次データソースを有し得、基準は、「顧客の国」に一致するように求められて二次列Ａに設定され、その結果、１つの二次レコードがテンプレートに使用されるが、選択されたインボイスに応じて変化する。
【０１８０】
二次データソースからの１つまたは複数のレコードがテンプレートによって使用される場合、基準は、二次データソースから複数のレコードを選択することをもたらし得る。二次データソース上のデータの列への参照は、いくつかのレコード値の連結に対して評価されてもよく、見出された第１のレコード値だけであってもよく、またはテンプレートは、それぞれが二次データ値の１つを有する複数のセルをポピュレートするように指定されてもよい。テンプレートは、複数の行または列にまたがるセル内の二次データソースへの参照を有することによって、これを指定し得る。あるいは、テンプレートは、二次データ値の提示を定義するために使用するネストされたテンプレートを指定し得る。ネストされたテンプレートの指定は、テンプレート内の“ＵＳＥＴＥＭＰＬＡＴＥ（  ）”などのスプレッドシート式関数を使用することによって、テンプレート上にフローティングまたはアンカー制御をドラッグおよびドロップすることによって、テンプレートに関連するｗｅｂｉｆｉｅｒ内のオプションを利用して、ネストされたテンプレート、上記の組み合わせ、および／またはその他を挿入するためにテンプレート内の場所を指定することによって行うことができる。ネストされたテンプレートの境界は、ＵＳＥＴＥＭＰＬＡＴＥ関数へのパラメータとしてセルをマージし、シートの外部であるが、ネストされたテンプレートまたは親テンプレートに関連するｗｅｂｉｆｉｅｒ内のオプションを指定し、セルを色分けし、セルの周りの境界線を描画し、かつ／またはネストされたテンプレートの境界を表すように指定されたセルの領域を選択することによって指定することができる。テンプレートのネストは、セルの挿入をもたらし、既存のテンプレートセルを下および／または左にシフトさせて、該当する二次データ値のすべてを表示するための適切な余地を提供し得る。
【０１８１】
オートゲンおよび仮想シート
いくつかの態様によれば、ｗｅｂｉｆｉｅｒは、設計者の作業を容易にするために、他のシートおよび／またはテンプレートに基づいてシートを自動的に生成し得る。上記のように、行レコードシートは、単一のシートの多くのレコードを整理し得る。ｗｅｂｉｆｉｅｒによって自動的に生成される行レコードシート、またはそれ以外の場合、スプレッドシートアプリケーションによって生成される行レコードシートは、「オートゲン」シートと称され得る。本明細書においてｗｅｂｉｆｉｅｒを参照して説明されるが、当業者であれば、以下にさらに説明される特徴を有するシートは、ｗｅｂｉｆｉｅｒ以外のスプレッドシートアプリケーションに使用され得ることを理解するであろう。
【０１８２】
ｗｅｂｉｆｉｅｒは、ページを定義する際の複数のデータソースの選択、テンプレート内またはネストされたテンプレートを介しての複数のデータソースの参照、行レコードシート間の関係の識別、および／または明示的な要求を含むがこれらに限定されない様々な設計者アクションに応答して、行レコードシート（「オートゲン」シート）を自動的に生成し得る。適切な設計者アクションに応答して、ｗｅｂｉｆｉｅｒは、以下でさらに説明される様々な方法でオートゲンシートを生成し得る。
【０１８３】
設計者定義および／またはオートゲンシートは、完全に仮想であり得、各セルは、以下に記載される特徴を有するか、または部分的に仮想であり得、特徴のうちのいくつかのみを有するか、かつ／またはそれらをいくつかのセル、列、および／または行のみに適用する。従来のスプレッドシートアプリケーションは、典型的には、別のセルを定義する際の１つのセルの２つの使用方法を可能にする。これらの典型的な方法は、いずれも「非仮想」と称され得る。第１の方法では、セルＡ１が“＝１＋ｚ１”として定義され、Ｂ１がＡ１に基づくことになる場合、従来のスプレッドシートツールは、ユーザがＡ１の定義をＢ１にコピーおよびペーストすることを可能にする（定義による１回使用）ことで、Ｂ１は現在定義“＝１＋ｚ１”を有することになるが、しかしながら、この場合、Ａ１へのその後の変更はＢ１に反映されない。第２のタイプでは、従来のスプレッドシートツールは、ユーザが式“＝Ａ１”をＢ１に入力することを可能にし（参照により使用する）、その後のＡ１への変更はＢ１に反映されるであろうが、セルの選択および使用全体がＢ１の式内で定義されているために、ルックアップの結果、または部分的にはか関係に応じて使用するセルの選択が変化するなど、ユーザが宣言し、読み取り、かつ維持するためにＢ１内の式が複雑になるケースがある。どちらの非仮想方法においても、Ｂ１への任意の修正は自動的にＡ１に影響を与えず、フォーマットの変更はどちらの方向にも反映されない。
【０１８４】
本明細書に記載される態様は、セルの使用の第３の方法が別の方法を定義することを可能にし得、これは、「仮想ビュー」または単に「仮想」参照方法と称され得る。この仮想参照方法では、別のセルの仮想ビューとして動作するセルは、対応するセルのコンテンツを表示するために自動的に同期され得、対応するセルへのすべての変更（例えば、参照されるセルへの変更に応答して、そのセルの式、書式設定、または更新された値の変更）を同一に反映し得る。仮想方法では、Ａ１へのその後の変更がＢ１に反映されてもよく、ユーザがＢ１を維持するのはそれほど複雑ではなく、Ｂ１への変更がＡ１に反映されてもよく、Ｂ１への変更がＡ１に影響を及ぼしてもよいため、任意の数のビューが自動的にすべてのビューに影響を及ぼすように変更されてもよい複数の仮想ビューが存在し得る。オートゲンシートと同様に、当業者は、本明細書に記載される仮想参照および仮想シートが、ここで論じられるｗｅｂｉｆｉｅｒの例示的な実施態様を超えて使用および用途を見出すことを理解するであろう。仮想シートを定義する際に、設計者は、フォーマット変更のすべてまたはいくつかが仮想ビューに反映されるか、またはいずれも反映されない場合に制御するためのオプション、および、オーバーライドされたセルが仮想でなくなるように、どの方向変更が直接データ値または式で反映されるか、またはオーバーライドされることが許可されるかを制御するためのオプションを指定し得る。
【０１８５】
いくつかの態様によれば、設計者定義および／またはオートゲンシートは、スプレッドシート内の他のセルに仮想ビューを提供するセルを有する仮想シートであり得る。仮想シートのコンテンツは、別のシートおよび／または同じシートのセルコンテンツと同一であるように、自動的に同期されている。仮想シートは、１つまたは複数の他の行レコードシート、外部データベースソース、および／またはシートレコードのインスタンス、および／または直接データ値および式を有する列などの他のデータソースへの間接的なビューを含み得るか、またはそれらから成り得る。いくつかの態様によれば、仮想シートは、データの完全に冗長なコピーとして他のデータソースとは独立して永続的かつ／または一時的に格納されてもよいか、ビューの定義として任意の直接的なデータと共に格納されてもよいか、参照の便宜のために、一切格納されることなく設計者に示されてもよいか、または設計者がそれらを見ることを指示するまで設計者から完全に非表示してもよい。仮想シートは、複数のデータソースにわたって重複される列を除外し、かつ／または非表示し得る。仮想シート内のソースデータの任意の冗長コピーは、静的であり得るか、定期的に更新され得るか、または他のデータソースが変更されたことが検出される際に、領域の当業者に明らかであろう任意の数の共通の検出方法を使用してリアルタイムで自動的に更新され得る。
【０１８６】
オートゲンおよび／または仮想シートは、シートまたは他のシートの残りを参照するデータまたは式を有する新しい列を追加すること、列を削除すること、フォーマットを変更すること、新しいレコードを追加すること、および／または特定のレコード値をオーバーライドすることを含む、設計者によるいくつかの修正を許可し、かつ／または禁止し得る。それらは、設計者が上に構築するための基礎として使用されてもよく、すなわち、セルは、個々に、領域として、または集計によって、他のシート、式、またはページ定義によって参照されてもよい。
【０１８７】
オートゲンおよび／または仮想シートが、シートレコードのインスタンスをそれらのソースデータとして有するとき、ｗｅｂｉｆｉｅｒは、新しいシートに含まれるべきシートレコードからのセルまたは領域のリストを設計者から取得し得る。加えて、かつ／または代替的に、ｗｅｂｉｆｉｅｒはまた、入力セルを示すものとして典型的にスプレッドシートツールによって示唆される、オレンジ（または他の色）の背景を有するものなどの指定された色のすべてのセルを配置するためにシートレコードを分析し、次いで、新しいシートに含めるためにそれらのセルを自動的に選択し得る。ｗｅｂｉｆｉｅｒは、設計者が任意の数のスプレッドシートファイルを選択し、かつ／またはアップロードするか、または１つまたは複数のファイルから任意の数の特定のシートを選択することができ、すべてのインポートされたシートが新しいシート上に表される選択されたセルを有するインポート機能を可能にし得る。仮想ビューがなければ、例えば、シートレコードの多くのインスタンスのすべてのＢ１０セルを集約する典型的な代替案は、“＝ＩｎｓｔａｎｃｅＡ！Ｂ１０＋ＩｎｓｔａｎｃｅＢ！Ｂ１０＋ＩｎｓｔａｎｃｅＣ！Ｂ１０＋ＩｎｓｔａｎｃｅＤ！Ｂ１０．．”が変更された場合、頻繁に番号が古くなる危険性がある。仮想シートまたは仮想列は、付加的な仮想セルを自動的に追加するか、または更新するために、データソースのインスタンスの存在を分析するか、または監視し得る。
【０１８８】
Ｗｅｂｉｆｉｅｒは、仮想行レコードシートに変換されるセルを超えたコンテンツのいずれかの矛盾または違いがある場合、インポートシートをスキップするか、またはインポートシートについてユーザに警告し得る。ｗｅｂｉｆｉｅｒは、矛盾を分析し、１つまたは複数がインポートに影響を及ぼさないと判断してもよく、またはインポートは矛盾に対応してもよい。例えば、フォントサイズおよび行幅は、無視された矛盾であり得る。予想される２と実際の３との間で異なる空白行の数は、ｗｅｂｉｆｉｅｒが付加的な行を削除またはスキップすることをもたらし、その結果、重要なことが進むことができるが、予想される１と実際の０との間の矛盾は無視されない場合がある。多くの標準的なスプレッドシート拡散法は、市販されており、しばしば、別のシートに対するコンテンツの多くのセルの位置の分析を伴う。これらの標準的な方法は、以前にインポートされたシートと比較して、絶対的な位置を変更したが、依然として確実に位置し、値を抽出することができるセルコンテンツを正確に見つけるために使用され得る。このような標準的な分析の使用において、ｗｅｂｉｆｉｅｒは、対象となるセルの値の差を無視し、対象となるセルが常に一致しなくても配置することができるように、近傍のセルの位置に焦点を当てることができる。
【０１８９】
同様に、ページ定義はまた、自動的に生成され得、かつ／または仮想的であり得る。オートゲンおよび／または仮想ページは、設計者によって定義されるテンプレートを使用してもよいか、または自動的に生成されるテンプレートを使用してもよく、ページおよびテンプレートは、ソースとして手動定義、自動生成、および／または仮想シートを使用してもよい。ページ定義および／またはテンプレートの生成のためのトリガは、オートゲンシートのトリガと同様であり得るか、またはオートゲンおよび／または仮想シートの作成に起因してトリガされ得る。あるいは、設計者がレコードシートに関連付けられたページを作成するとき、ｗｅｂｉｆｉｅｒは、最も関連性が低いものから順序付けられた先に定義されたテンプレートのリストを提示し得る。関連性は、シートが既に異なるデータソースと共に使用されているテンプレートであるかどうか（関連性が低いことを示す）、シートが、テンプレートではなく列で最小限のフォーマットおよび一貫した種類の値を有する典型的な行レコードシートのように構成されているかどうか（関連性が低いことを示す）、かつ／またはページの選択されたレコードシートとの見込みシートのコンテンツの類似性（行レコードシートの列ヘッダおよび見込みテンプレートシートのセルの両方にそれぞれ表示される単語数など）を分析することによって決定され得る。
【０１９０】
ページまたはシートのための自動生成プロセスは、例えば、自動生成を実行するかどうかを設計者と確認すること、設計者から付加的な情報を要求すること、および／または設計者による結果の明示的な確認などの何らかの人による関与を伴ってもよく、または伴わなくてもよい。
【０１９１】
Ｗｅｂｉｆｉｅｒは、使用されるブラウザのブランドなどの、ユーザに固有のプロパティまたはブラウザセッションに固有のプロパティを含む、現在の訪問者ユーザ名、現在の訪問者プロパティ、役割、最後のログイン時間などの現在のユーザ情報のための読み取り専用仮想オートゲンシートを提供し得る。これにより、他のシート上の任意の式が、現在のユーザに関する情報を参照することが可能になる。同様のアプローチが、デスティネーションシステムが利用可能である他のコンテキストに適用され得る。
【０１９２】
Ｗｅｂｉｆｉｅｒは、仮想シート内の各行が変更を表し、各列が任意のシート上の任意の単一のセルを表す変更履歴を有する読み取り専用仮想オートゲンシートを提供し得、いくつかのセルは、同じ仮想シート内でそれらの履歴を利用可能にし得る。列のうちの１つは、セルのその値がいつ発生したかを表すタイムスタンプ列であり得る。
【０１９３】
テンプレートインジケータ
一例として、設計者は、データソースへのいかなる参照もせずに、データソースへの参照が追加されるためのインジケータを用いて、スプレッドシートツール内にインボイスの挿入テンプレート「ＩｎｖＴｅｍｐｌａｔｅ」を作成し得る。設計者は、そのテンプレートを参照して、詳細タイプのページを作成し得る。ｗｅｂｉｆｉｅｒは、テンプレート内のすべてのインジケータを識別し得、設計者からのさらなる関与なしに、各インジケータがインジケータを有する場合、“ＩｎｖＴｅｍｐｌａｔｅ＿Ａ１”等の列名を有する列を割り当てられる仮想行レコードシートＶｉｒｔＩｎｖＳｈｅｅｔを自動的に生成し得る。ｗｅｂｉｆｉｅｒはまた、ＶｉｒｔＩｎｖＳｈｅｅｔをデータソースとして使用し、訪問者が任意の選択されたインボイスの詳細に移動するためのナビゲーションリンクの列を使用して、仮想レポートページを自動的に生成し得る。ＩｎｖＴｅｍｐｌａｔｅがインボイスアイテムを入力するためのネストされたテンプレートを有する場合、ｗｅｂｉｆｉｅｒは、第２の仮想行レコードシートＶｉｒｔＩｎｖＩｔｅｍＳｈｅｅｔを自動的に生成し得、これには、以前に示された設計者が各インボイスに対して一意であり、一次キーとして扱うことができるＩｎｖｔｅｍｐｌａｔｅ上のインジケータに結びつく列がある。ｗｅｂｉｆｉｅｒは、次いで、ＶｉｒｔＩｎｖＩｔｅｍＳｈｅｅｔをデータソースとして、および同様のナビゲーションリンクを用いて仮想レポートページを生成し得る。また、この例では、各インボイスアイテムの販売頻度および挿入された毎月のインボイス数について自動的に生成されるページを有するように、ｗｅｂｉｆｉｅｒは、ＶｉｒｔＩｎｖＳｈｅｅｔまたはＶｉｒｔＩｎｖＩｔｅｍＳｈｅｅｔ内の列に基づいて集計式を有するテンプレートおよびページを自動的に生成することができる。次いで、設計者は、付加的なシートおよびページを構築し続けるために、自動生成および仮想シートならびにレポートのすべてまたは一部を参照または修正し得る。
【０１９４】
ネストされた行レコードシートの場合、ネストされたデータレコードによって参照される親データシートの一次キー列を識別する代替として、ｗｅｂｉｆｉｅｒは、潜在的に一次キーの一部であるために、親データシートのすべての列、実質的にすべての列、またはデータタイプまたは長さなどの基本基準を満たすすべての列に対応するネストされたシート内の自動生成および／または仮想列を有し得る。ネストされたシートを利用する親テンプレートは、親テンプレートによって表示される親レコードと一致させるために、ネストされたレコード上のすべてのそれらの列の基準を用いて、ネストされたレコードを自動的にフィルタリングし得る。別の代替として、設計者が、テンプレートからネストされたデータソースを含む二次データソースを参照し、かつフィルタリングするために、先に説明された方法で基準を提供するとき、二次データソースをフィルタリングするための基準で指定された列は、どの列がネストされたシートに追加されるべきかをｗｅｂｉｆｉｅｒに示すために使用され得る。
【０１９５】
定義された設計者、オートゲン、および／または仮想シートは、テーブル、列、行、または個々のデータ値などの要素に関連付けられた付加的な自動的に生成されたメタデータを有し得る。メタデータは、要素、タイムスタンプ、関連ページの識別子、または関連する他のシートの識別子の一意の識別子を含むか、またはそれらから成り得る。メタデータは、要素の作成のためのトリガまたは目的を識別するために、他の要素の修正または削除をカスケードするために、他の要素、ページ、および／またはシートが外部キーとして使用するための要素の一次キーとして、または要素と他のページおよび／またはシートとの間の関係のさらなる分析または報告のための基礎として機能するために、使用され得る。このようなメタデータは、参照の便宜のために付加的な列または行として設計者に可視化され得、かつ／またはスプレッドシート式、ページ定義、または他のスプレッドシートデータ値が使用される任意の方法によってさらに使用され得る。あるいは、メタデータは、“ＲＥＳＯＬＶＥＲ（ｃｅｌｌ  ｒｅｆｅｒｅｎｃｅ）”スプレッドシート式によって設計者にアクセス可能であり得る。そのようなメタデータはまた、レコード間の関係における潜在的な曖昧さを検出するために、かつ／または設計者または訪問者からのさらなる情報の収集をトリガするために使用され得る。
【０１９６】
先の例への拡張として、ＶｉｒｔＩｎｖＩｔｅｍＳｈｅｅｔは、一次キー列が設計者によって指定される必要がないように、ＶｉｒｔＩｎｖＳｈｅｅｔの実質的にすべての列を有し得る。ｗｅｂｉｆｉｅｒは、インボイスの一次キーとして機能するＧＵＩＤを有する仮想列をＶｉｒｔＩｎｖＳｈｅｅｔに、かつＶｉｒｔＩｎｖＩｔｅｍＳｈｅｅｔに列を追加して、その一次キーに対する外部キーとして機能し得る。インボイスアイテムがＩｎｖＴｅｍｐｌａｔｅを使用してページ上で作成されると、ＶｉｒｔＩｎｖＩｔｅｍＳｈｅｅｔの外部キー列は、ＶｉｒｔＩｎｖＳｈｅｅｔ一次キーによって自動的にポピュレートされる。次いで、ｗｅｂｉｆｉｅｒは、関連プログラミングの当業者に典型的な方法で外部キー列および一次キー列を使用してもよいか、または、ＶｉｒｔＩｎｖＳｈｅｅｔの実質的にすべての列をＶｉｒｔＩｎｖＩｔｅｍＳｈｅｅｔに含めることがインボイスアイテムがどのインボイスアイテムに属するかを一意に識別するのに十分ではない範囲で、それらの値のすべてについて同一である２つのインボイスが存在する場合など、インボイスアイテムがインボイスに関連付けられていることを選択的に確認してもよい。次いで、ｗｅｂｉｆｉｅｒは、インボイスがデータ完全性の問題またはデータ構造の理由によって一意性が欠如していることを設計者に警告し得、設計者に様々な推奨されるベストプラクティスを提案し得る。
【０１９７】
関係の自動検出
Ｗｅｂｉｆｉｅｒは、レコードシート間、およびデータソース全般または１つまたは複数のテンプレートまたはページ定義などの特定のコンテキスト内のデータソース間の関係の存在、種類、および／または具体的な内容を自動的に検出し得る。ｗｅｂｉｆｉｅｒは、設計者アクション、訪問者アクション、設計者または訪問者によるレコードデータ入力、レコード構造、レコードシート上のフォーマット、テンプレート構造およびフォーマット、ページ定義、グローバルホワイトリスト、静的ブラックリスト、それをサポートするスプレッドシートツールに宣言された関係、またはＭｉｃｒｏｓｏｆｔ  ＰｏｗｅｒＰｉｖｏｔなどのスプレッドシートツールプラグインを含む関係の自動検出を支援するために、利用可能な情報（「手がかり」と称され得る）の任意の組み合わせを使用するか、または分析し得る。分析の結論の信頼性を高めるために、様々な静的もしくは動的計量アルゴリズムまたはポイントシステムを使用して、複数の手がかりを一緒に分析し得る。信頼性レベルは、利用可能な手がかりの数および各手がかりの結論の一貫性を含む、手がかりのいくつかの特徴によって測定され得る。例えば、手がかりを組み合わせて、特定の関係を示唆する手がかりの数から、異なる関係を示唆する手がかりの数および／またはその特定の関係の欠如を引いた数をカウントすることによって、信頼性レベルを得ることができる。信頼性レベルは、ｗｅｂｉｆｉｅｒによって無言で関係を受け入れるべきか、設計者は信頼性レベルによって命令される１つまたは複数の推奨事項のうちの推奨事項として結論を明示的に確認するべきか、または、分析は結論を得るのに不十分であるとして無視されるべきであるかを判断するために使用され得る。
【０１９８】
手がかりは、“ＶＬＯＯＫＵＰ（  ）”または“ＣＯＵＮＴＩＦＳ（  ）”などのスプレッドシート関数に提供されるパラメータを含んでもよい。例えば、“＝ＶＬＯＯＫＵＰ（ＤｅｔａｉｌＳｈｅｅｔ！Ｃ５、ＰａｒｅｎｔＳｈｅｅｔ！Ｂ：Ｆ、３、ｆａｌｓｅ）”の式を含むテンプレートまたは行レコードシートは、詳細シート上のＣ列が親シート上の一次キー列Ｂに対する外部キーであることを示すことができる。手がかりは、テキストまたは番号フォーマットなどのスプレッドシートセルのフォーマットを含み得る。例えば、ドル記号としてフォーマットされている値は、典型的には、ドル記号を含む列が外部キーでも一次キーでもないことを示唆し、それらのドル値列を集計などの方法で使用するいずれの列もないことを間接的に示唆するであろう。手がかりは、レコードシート上にゼロレコードの場合であっても、列名を含んでよい。例えば、「ｕｉｄ」または「インボイス番号」という名前の列は、「コメント」のブラックリスト列名よりもキーである可能性が高い。手がかりは、列と共に含まれるデータの一意性を含み得る。例えば、列が常に同じ値を有する場合、それは依然として外部キーであってもよいが、一次キーではなく、複合一次キーの一部である可能性が低い。手がかりは、列内のデータの長さを含み得る。例えば、いくつかの値に対して空白を有する列と同様に、すべての値が一意であっても、多数の単語を通常有するメモ列がキーとなる可能性は低い。手がかりは、列内のデータの一貫性を含み得る。例えば、１つの列が数値および時には単語の両方を有する場合、データ種類および長さが一貫した列と比較して、キー列である可能性は低い。手がかりは、ネストされたテンプレートを有するか、またはネストされたシートを参照するテンプレートの定義を含み得る。例えば、インボイスがインボイスアイテムのリストを有し、設計者が現在表示されているレコードのＩｎｖｏｉｃｅＩＤに一致するネストされた列“ＢｅｌｏｎｇｓＴｏＩｎｖｏｉｃｅ”によって示されるインボイスアイテムをフィルタリングすることを示す場合、ＢｅｌｏｎｇｓＴｏＩｎｖｏｉｃｅはおそらく外部キーであり、ＩｎｖｏｉｃｅＩＤはおそらく一次キーであり、一方が他方と比較してネストされた方法で使用される事実によって、インボイスとインボイスアイテムとの間に関係がある確率が増加する。手がかりは、仮想一次キーおよびいくつかの非自動生成列を分析して、仮想一次キーと最も密接に相関する列を識別することを含み得る。手がかりは、特定の列を指定する訪問者検索の発生をカウントすること、または特定の列内の値に一致する値を指定することを含み得る。例えば、リストレポートページにおいて、訪問者が頻繁に「Ｉｎｖ０５１１」等のテキストを検索する場合、Ｉｎｖ０５１１等の値を含む列は、一次キー列である可能性が高い。手がかりは、データがどれだけシーケンシャルであるかを含み得る。例えば、ギャップのない値１〜１００を有する列は、両方のシートが同じテンプレートによって使用される異なるシート上の同様の列の存在とともに、両方のシートが関係を有し、両方の列が関係を有することを示唆する。手がかりは、第２のシート上の列に対する１つのシート上の列の値の��布を含み得る。例えば、シートＦ列Ａが常にシートＳ列Ａの値を有する１：１の分布を有する場合、第２のシートＳは、シートＦ上のレコードに必要な詳細レコードである可能性が非常に高い。１：０−１の分布を有する場合、シートＦのレコードのオプションの詳細レコードである。他のすべての列と共に１：０の分布を有する場合、シートＦおよびシートＳは、それらの間の関係を有さない可能性がある。手がかりは、列の位置決めを含み得る。例えば、レコードシート内の第１の列は、ミドル列と比較して一次キーである可能性が高く、または互いにすぐに隣接する列は、遠く離れた列よりも複合一次キーを形成する可能性が高い。
【０１９９】
関係のさらなる利用
スプレッドシートツールの多くの従来の数式関数を用いて、二次データソースからの情報を参照することができる。ｗｅｂｉｆｉｅｒは、自動検出関係などの識別された関係を使用して、二次データソースからデータにアクセスする機能および方法をさらに簡素化し得る。先ほどの例の拡張として“＝ＶＬＯＯＫＵＰ（ＤｅｔａｉｌＳｈｅｅｔ！Ｃ５，ＰａｒｅｎｔＳｈｅｅｔ！Ｂ：Ｆ，３，ｆａｌｓｅ）”は、詳細シートと親シートとの関係が既に定義されている場合、どのような手段を介しても、ｗｅｂｉｆｉｅｒは詳細シート内から呼び出される場合、詳細シートと親シートの関係は、詳細シートのＣ列の外部キーと親シートのＢ列の一次キーとの関係同様に既に知られているため、詳細シート上のＺ５などのセルが、“＝ＷＥＢＩＦＩＥＲＶＬＯＯＫＵＰ（ＰａｒｅｎｔＳｈｅｅｔ！Ｄ）”の簡略化された関数を使用することを可能にする。関数名は、この例と異なる場合もあれば、同じＶＬＯＯＫＵＰ（  ）関数名を共有するが代替パラメータと共有するオーバーロードである場合もある。
【０２００】
別の例は、ＳＵＭＩＦＳの代替バージョンであり、特に複合一次キーにより適しているであろう。この例では、詳細シート上の列Ｆの集計を、Ｃ５：Ｄ５での複合一次キーが、ＤｅｔａｉｌＳｈｅｅｔ！Ａ：Ｂでの複合外部キーと一致する行レコードに制限する、“＝ＳＵＭＩＦＳ（ＤｅｔａｉｌＳｈｅｅｔ！Ｆ：Ｆ，ＤｅｔａｉｌＳｈｅｅｔ！Ａ：Ａ，ＣＯＮＣＡＴ（‘＝’，Ｃ５），ＤｅｔａｉｌＳｈｅｅｔ！Ｂ：Ｂ、ＣＯＮＣＡＴ（‘＝’，Ｄ５））”に類似した従来の使用は、同じ結果を達成する、代替バージョンの“＝ＳＵＭＩＦＳＷＥＢＩＦＩＥＲ（ＤｅｔａｉｌＳｈｅｅｔ！Ｆ：Ｆ）”と置き換えられてもよい。
【０２０１】
同様に、従来の関数にデータを渡す前にパラメータをフィルタリングすることを示す関数が追加され得る。例えば、ＳＵＭＩＦＳＷＥＢＩＦＩＥＲではなく、ｗｅｂｉｆｉｅｒは、同等物として“＝ＳＵＭ（ＦＩＬＴＥＲ（ＤｅｔａｉｌＳｈｅｅｔ！Ｆ：Ｆ）”を評価してもよい。キーに基づきながらも付加的な基準に基づいてフィルタリングするには、フィルタ関数は、“ＳＵＭ（ＦＩＬＴＥＲ（ＤｅｔａｉｌＳｈｅｅｔ！Ｆ：Ｆ，ＤｅｔａｉｌＳｈｅｅｔ！Ｃ：Ｃ，‘＞１００’）”が依然として複合キーによってフィルタリングされるがまた、１００を超える値を有する列Ｃによってフィルタリングされるように、付加的なパラメータを受け入れ得る。付加的なパラメータのフォーマットは、ＳＵＭＩＦＳ（  ）などで従来見られる構文と一致し得る、ＳＱＬスタイルのクエリ文字列であり得る、他の一般的に利用可能なソフトウェアで使用される代替構文であり得るか、または“＝ＳＵＭ（ＦＩＬＴＥＲ（＠Ｆ，＠Ｃ＞１００）”などのｗｅｂｉｆｉｅｒに固有の構文であり得る。あるいは、ｗｅｂｉｆｉｅｒ全体にわたってと同様に、範囲はまた、“ＴａｂｌｅＮａｍｅ［ＣｏｌｕｍｎＮａｍｅ］”などの従来の構造化参照によって指定され得る。次いで、ｗｅｂｉｆｉｅｒは、式分解エンジンの一部として構文を処理してもよく、スプレッドシートツールに格納する前に構文を従来の構文に変換し得、スプレッドシートツールの予想される構文と部分的に互換性を持たせるために引用マークを必要とし得るか、または設計者がデスティネーションシステム内の処理と比較してプレビューするためにスプレッドシートツール内の処理のために拡散技術を使用し得る。
【０２０２】
挿入または編集ページなどの訪問者入力を伴うページタイプの場合、前述の方法のいずれかによって定義される関係を使用して、二次データソースに挿入されたレコードのための外部キー列の自動ポピュレーションと共に、二次データソース上のレコードのフロースルー挿入または編集を可能にすることができる。関係を利用して二次データソースの特定のレコードを参照するが、入力制御としてページ上に提示されるように指定された式を含む入力ページのテンプレート上の任意のインジケータは、二次データソース上の参照されたレコードシートセルが編集されるか、または新しいレコードが二次データソースに挿入される結果をもたらす可能性がある。例えば、ＩｎｖＳｈｅｅｔの各レコードがＩｎｖＳｈｅｅｔＥｘｔｅｎｄｅｄに対応するレコードを有するレコードシートＩｎｖＳｈｅｅｔとレコードシートＩｎｖＳｈｅｅｔＥｘｔｅｎｄｅｄとの間の関係の場合、ＩｎｖＳｈｅｅｔとＩｎｖＳｈｅｅｔＥｘｔｅｎｄｅｄの両方を参照する挿入ページのテンプレートがデスティネーションシステムに提出されると、ｗｅｂｉｆｉｅｒはＩｎｖＳｈｅｅｔに１つのレコードを挿入し、ＩｎｖＳｈｅｅｔＥｘｔｅｎｄｅｄに１つのレコードを挿入し、それらの関係を定義するキーに関連する列が自動的に入力される。同様に、挿入ページのテンプレートが、ＩｎｖＳｈｅｅｔ列およびＩｎｖＳｈｅｅｔＥｘｔｅｎｄｅｄ列の両方から構成される仮想シートＩｎｖＳｈｅｅｔＣｏｍｂｉｎｅｄを参照した場合、ｗｅｂｉｆｉｅｒは、１つのレコードがＩｎｖＳｈｅｅｔに挿入され、１つのレコードがＩｎｖＳｈｅｅｔＥｘｔｅｎｄｅｄに挿入されるように仮想参照を分解する。フロースルー編集および一次データソースが二次データソース上で参照すべきレコードへの編集の両方が可能である場合、ｗｅｂｉｆｉｅｒは、式関数パラメータ、ページオプション、および／または設計者への情報の要求をポップアップすることによって設計者から追加情報を取得し得る。たとえば、編集レコードページに使用されるＩｎｖＩｔｅｍＴｅｍｐｌａｔｅ詳細テンプレートで、セルに式“＝ＷＥＢＩＦＩＥＲＶＬＯＯＫＵＰ（Ｉｎｖｏｉｃｅｓ［ＩｎｖＮａｍｅ］）”とｗｅｂｉｆｉｅｒで宣言された適切な関係、または関数へのパラメータに明示的に説明された関係を有する従来のＶＬＯＯＫＵＰがある場合、その式でテンプレートのセルを編集する訪問者は、インボイスアイテムが属する親インボイスを変更するか、またはインボイス名をフロースルー編集するつもりであるかのいずれかを意図し得る。次いで、ｗｅｂｉｆｉｅｒは、テンプレートセルの対応する入力制御が編集されるときにどの変更が生じるかを決定するように設計者が設定し得るページ上に「フロースルー編集を可能にする」オプションを有し得る。編集により、一次データソースが二次データソース上でどのレコードを参照するかが変更される場合、ｗｅｂｉｆｉｅｒは、入力の便宜上、かつ／または、制御が受け入れる値を関係を考慮して有効な値に制限するために、デスティネーション入力ページに表示される入力制御の種類を変更し得る。前の例を続けて、インボイス名を入力するのに適したテキスト制御の代わりに、レンダリングされた制御は、インボイス名を選択すると、インボイスアイテムの親をその名前に関連付けられたインボイスに変更する、すべてのインボイス名のリストを有するドロップダウンであり得る。
【０２０３】
デスティネーションシステムにスプレッドシート定義を入れる
図２のステップ２０７に戻ると、スプレッドシートが適用可能なデータで要望に応じて構成されると、設計者が、１つまたは複数の例示的な実施形態に関連して本明細書で説明したｗｅｂｉｆｉｅｒソフトウェアを用いてデスティネーションシステムを構築するべくプロセスを開始することがさらに含まれ得る。ユーザは、デスティネーションシステムにログインし（図１３）、スプレッドシートを受け入れる管理ウェブページを訪問し得る。例えば、ｗｅｂｉｆｉｅｒソフトウェアは、ｘｌｓｘスプレッドシートファイル（図６８）、例えば、データ１２９（図１）のアップロードを受け入れる入力フォームを有し得る。代替的に、ｗｅｂｉｆｉｅｒは、クラウドおよびウェブベースのスプレッドシートツールからｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩを介して、ＡＰＩがそれを可能にするならシートのグループを一度にまたはさらにはＡＰＩがそれを必要とするならセルごとに、スプレッドシート定義をフェッチするべく統合を有し得る。簡略のため、すべてのこれらの方法は、本明細書で「アップロードする」、すなわち、スプレッドシート定義またはデータファイルをｗｅｂｉｆｉｅｒデータストア、例えば、データベース１３１へアップロードする（図１）として言及される。特に、レコードをアップロードするためのおよびインターフェーステンプレートをアップロードするための別個のステップは必要とされず、それらは１つのスプレッドシート定義から設計者から１つのステップで行うことができ、またはそれらは別々の時点で行われ得る。
【０２０４】
Ｗｅｂｉｆｉｅｒは、スプレッドシート定義を一時的に格納し、これを代替のより効率的なフォーマット、若しくはスプレッドシートを考慮するまたはもはや考慮しない中間フォーマットと置き換え得る。実装の効率と簡素さのバランスを達成する一例は、シートをデータベースエントリに変換することであり、その場合、シート内の各セルは、セルの場所および内容を表す４つのフィールド：シート、列、行、内容、を有するデータベーステーブルにおける１つのデータベースレコードである。内容は、スプレッドシート定義のオリジナルのスキーマと一致し得るが、セルは、データベースにおいて効率よくルックアップされ得る。システムはまた、これを、受信したフォーマットで持続的に格納してよく、その場合、デスティネーションシステムのページ上の訪問者入力は、本明細書で説明されるようにスプレッドシート定義を直接修正することにより持続される。
【０２０５】
ウェブページの作成
ステップ２０９（図２）に関連して前述したように、結果として生じるソフトウェアは、例示的な実装に関連して本明細書で説明した１つまたは複数のウェブページを備えるウェブアプリケーションを含み得る。設計者は、ｗｅｂｉｆｉｅｒソフトウェアのａｄｍｉｎインターフェースにおいて“ａｄｄ  ｐａｇｅ”特徴を選択し（図１８、図６９、および図５５）、様々なページタイプ（図５１）および構成オプション（図５２）から選択し得る。スプレッドシート定義内のセルデータまたはメタデータは、新しいページを作成する、どんなタイプのページが設計者により意図されたか、およびそれらの種々の構成オプションの、インジケータまたは命令を含むことが可能であるが、この情報がなければ設計者は催促され得る。多様なページタイプをデスティネーションサーバ上で作成することが可能である。典型的に、すべての生成されたデスティネーションページのメニューは、ｗｅｂ  ａｐｐの全体を通した便利なナビゲーションを可能にするべく、すべてのデスティネーションページ上にメニューとして表示され（図６６の“Ｔｉｍｅｓｈｅｅｔ”ｗｅｂ  ａｐｐメニューは、該特定の例に関するすべての３つのデスティネーションページをリストする）、デスティネーションページは、“ａｐｐｓ”によりグループ化されてよく、それらは典型的に、それらがどんなスプレッドシート定義またはファイルから生じたかに基づいてグループ化される、および／またはそれらを作成した設計者によりグループ化される（ログイン設計者、またはログイン設計者とスプレッドシート定義を共有した他の設計者または他のグループから）（図１６）。デスティネーションシステムのメニュー内のデスティネーションページの順序は、設計者がＡｄｄ−Ｏｎ内からそれらの順序を変更するべくページをドラッグおよびドロップすることにより修正することができる。
【０２０６】
ページ（Ｒｅｐｏｒｔページ）の追加＋閲覧可能なソース範囲
ｗｅｂｉｆｉｅｒソフトウェアが作成し得るウェブページの１つの例示的なタイプは、“ｒｅｐｏｒｔ”ページタイプである。レポートのタイトルは、ユーザにより指定され得る、またはスプレッドシートのデータまたはタイトルから生成され得る（図５２）。ソースも指定され得る。ソースは、スプレッドシート定義内のシート名（図３３に示すＣＳＶ＿Ｉｍｐｏｒｔページタイプに関するソース制御と同様に）、“＝Ｂ９：Ｃ１２”などの典型的なスプレッドシートセル範囲参照（図３６）、スプレッドシート内で定義されるチャートの名前（図５２）、または“ＴｏｔａｌＣｏｌｕｍｎ”または“ＰｒｉｎｔａｂｌｅＡｒｅａ”または“Ｅｍｐｌｏｙｅｅ  Ｌｉｓｔ：Ｅｍｐｌｏｙｅｅ”などの名前により指すことができるセル範囲であるスプレッドシート“ｎａｍｅｄ  ｒａｎｇｅ”（往々にして“ｄｅｆｉｎｅｄ  ｎａｍｅ”として知られている）（図３６）とすることができる。一般に、範囲は、連続するブロックである必要はなく、それらは、いくつかのブロックおよびセルを備え得る。例えば、“Ａ１：Ａ８，Ａ１０，Ａ３０：Ｂ３０”。多くのページが同じソースセルを参照してよく、ソースセルは、別のページのソースと部分的に重複してよく、またはページは、組み合わされることになる一連のソースを有してよい。これは、設計者がスプレッドシートツールにおいて設計したレポートに基づいてデスティネーションシステムがＨＴＭＬウェブレポートまたはモバイル画面を訪問者に示すのに十分な構成であり得る。例えば、ＣｌｉｅｎｔＬｉｓｔシートは、このとき訪問者がアクセス可能となっているリストにおける行レコードのすべてで指定することもできる。“Ｓｈｏｗ  Ｐａｇｅ  Ｔｉｔｌｅ”などの多数の随意的な構成が指定され得る（図２８）。ページを閲覧するのにログインが要求されるかどうか（図２４）、どんなログインユーザまたはユーザのグループまたはロールが、どんなデバイス、ネットワークから、またはどんな時間帯にページの閲覧を許されるかを制御するべく、ａｐｐまたはページ上でパーミッションルールも指定され得る。図２５は、どんなログインユーザがページの閲覧を許されるかを示す簡易化された例を示す。最終結果は、ユーザがウェブデザインの知識を有することを必要とせずに、データのレイアウトおよび書式設定（図９７）を含むデータを供給するオリジナルのテンプレートスプレッドシートと似ているように見えるレポートを表示するウェブページである。
【０２０７】
デスティネーションページのソースデータは、セル範囲ではなく、セルの上に浮いているように配置されるチャートなどの、スプレッドシート定義内の特異的な要素にリンクすることもできる。
【０２０８】
いくつかのページタイプは、デスティネーションページにいくつかの構成済み制御を自動的に追加するオプションを有し得る。例えば、“ａｌｌｏｗ  ｓｅａｒｃｈ”（図４８）または“ａｌｌｏｗ  ＰＤＦ  ｅｘｐｏｒｔ”（図示せず）オプションが、ｃａｌｅｎｄａｒページタイプなどのいくつかのページタイプ上で利用可能であり、これは結果的に、意図されたカレンダーだけでなく、サーチ結果をスクロールおよびフォーカスするなどの方法によりユーザの注目を特定のデータに引き寄せるべくサーチテキストボックスおよびサーチサブミットボタンなどの複数の制御も有するデスティネーションページを生じることができる。サーチ結果の処理は、クライアント側またはサーバ側で行われ得る。
【０２０９】
ＩＮＳＥＲＴページの追加＋デフォルトのフォーム生成
ｗｅｂｉｆｉｅｒが作成することができる別のタイプのページは、例えば、例示的な実施形態に係る、上記の（図４３）、ステップ２１１（図２）中に用いられ得る、“ｉｎｓｅｒｔ”ページタイプである。同様に、ＣｌｉｅｎｔＬｉｓｔのソースが指定され、訪問者により行または列が挿入可能であることを設計者が意図するかどうかのインジケータであり得る。ヘッダの行を表すセルの範囲は、自動的に識別または検出され、オーバーライドのためにユーザに提示され得る（図３９）。検出は、例えば、セルの場所（第１のアイテムがヘッダであることの検出を実証する図４０）、その下にリストされた行と比較したフォントの太さまたは下線などの書式設定の差異、または簡単にシートの第１の行を取り上げることに基づくことができる。デスティネーションシステムは、訪問者により挿入が完了した後で訪問者に自動的にリダイレクトするためのオプションとして他のページのリストを提供することができる（図４４）。デスティネーションシステムは、次いで、それらのそれぞれの入力制御の傍のヘッダ行に列に基づくラベルを有する、自動的に生成される入力フォームを訪問者に示し、訪問者がデータを挿入することを可能にし得る（図９１）。スプレッドシートのＣｌｉｅｎｔＬｉｓｔからのセル書式設定は、自動的に生成される入力フォーム上のセルのラベルのｈｔｍｌ書式設定および入力制御に影響を及ぼし得る。各入力フィールドに関するラベルは、“Ｈｅａｄｅｒ  Ｓｏｕｒｃｅ”により決定されてよく、典型的に、ソース範囲の第１の行、Ｄｅｆｉｎｅｄ  Ｎａｍｅ、またはユーザにより選択された範囲のいずれかである。
【０２１０】
スプレッドシート定義で制約を指定することに加えて、Ａｄｄ−Ｏｎまたはデスティネーションシステム管理ページからの各フィールドの“Ｍｏｒｅ  Ｓｅｔｔｉｎｇｓ”タブ上の“Ｌｉｍｉｔａｔｉｏｎ  ｕｓｅｒ  ｉｎｐｕｔ”オプションで、フォーム上の入力のタイプを設計者によってさらに手動で指定するか、または制約することができる（図７８）。例えば、“Ｕｓｅｒ  ｏｆ  Ｐａｇｅ”制約および“Ｃｕｒｒｅｎｔ  Ｄａｔｅ”制約（図４４）は、既に記入されたログインユーザの名前または現在の日付を有する編集不可フィールドを提示してよく（図９１）、いくつかの列は、以前のレコードからコピーされ、同じく編集不可の式を有してよく、“Ｗｈｏｌｅ  Ｎｕｍｂｅｒ”および“Ｄｅｃｉｍａｌ”は、選択されたタイプの数字のみを可能にする数値入力を提示してよく、“Ｌｉｓｔ”は、指定の範囲からの値を含むドロップダウン入力を提示してよく、“Ｄａｔｅ”は、日付を選択するためのカレンダーを提示し（図９２）、“Ｔｉｍｅ”は、２４時間の時間ピッカーを提示し、“Ｎｏｎｅ”および“Ｔｅｘｔ  Ｌｅｎｇｔｈ”は、テキストフィールドを提示してよい。
【０２１１】
ＩＮＳＥＲＴページの追加＋カスタムのＵＩ（テンプレートソース）
Ｉｎｓｅｒｔページがより高い複雑さまたはカスタムの要件を有する場合、設計者はまた、例示的な実施形態によれば、スプレッドシート内の第１のＣｌｉｅｎｔＬｉｓｔソースに加えて、スプレッドシート内の“Ｔｅｍｐｌａｔｅ  Ｓｏｕｒｃｅ”を指定することもできる（図３５）。これは依然としてクライアントのリストへの挿入を行うことになるが、入力フォームユーザインターフェースは、Ｔｅｍｐｌａｔｅ  Ｓｏｕｒｃｅｓにより定義され得る。Ｔｅｍｐｌａｔｅ  ＩｎｄｉｃａｔｏｒがそのＴｅｍｐｌａｔｅ  Ｓｏｕｒｃｅｓ上のどこで見つかっても、セルの表示は、自動的に生成される入力制御に置き換えられてよく、入力制御の書式設定は、Ｔｅｍｐｌａｔｅ  Ｉｎｄｉｃａｔｏｒセルの書式設定からとられる。
【０２１２】
ＤＥＴＡＩＬＳページの追加＋ＬＩＳＴ−ＴＯ−ＤＥＴＡＩＬＳナビゲーション
別のページタイプは、例示的な実施形態によれば、指定のレコードソースおよびＴｅｍｐｌａｔｅ  Ｓｏｕｒｃｅｓに基づく“ｄｅｔａｉｌｓ”ページである。デスティネーションシステムは、テンプレートがどのレコードに対して適用されるべきかを訪問者が選択することを可能にする、テンプレート化されたレポートのレンダリングの結果の上に制御を配置し得る。代替として、Ｄｅｔａｉｌｓページは、Ｒｅｐｏｒｔページと組み合わせて用いられ得る。ＲｅｐｏｒｔページとＤｅｔａｉｌｓページとの両方は、ソースとしてＣｌｉｅｎｔＬｉｓｔスプレッドシートを有することになる。ＣｌｉｅｎｔＬｉｓｔスプレッドシートは、“Ｇｏ  Ｔｏ  Ｄｅｔａｉｌｓ”と呼ばれる追加された列を有してよく、各行は、“＝ＮＡＶＩＧＡＴＥＴＯ（‘ＤｅｔａｉｌｓＰａｇｅ’，Ａ３：Ｚ３，Ｂｌｕｅ，ＬｉｎｋＳｔｙｌｅ）”などの式を有することになり、これは、クライアントのすべてをリストするメインＲｅｐｏｒｔページの表示中に、行３またはクリックされたそれぞれの行によりポピュレートされるＤｅｔａｉｌｓＰａｇｅに訪問者を連れていくことになる、ハイパーリンクスタイルナビゲーション制御が各行上で見えるべきであることをデスティネーションシステムに示すことになる。別の代替として、Ｒｅｐｏｒｔページ作成中の構成オプションは、ＣｌｉｅｎｔＬｉｓｔスプレッドシート内の指定の右にそれらを有するのではなく、生成されるべきナビゲーションリンクを指定するように設計者に促し得る。Ｄｅｔａｉｌｓページ上の評価されるレコード値のセル書式設定は、Ｔｅｍｐｌａｔｅ  Ｉｎｄｉｃａｔｏｒセル書式設定とＴｅｍｐｌａｔｅ  Ｉｎｄｉｃａｔｏｒセルにレコードデータをポピュレートするセルの任意の所与の行の書式設定との組み合わせであってよく、組み合わせ可能な書式設定に対して両方のセルが競合する書式設定を有する（レコード上の色の変更がテンプレート上のより大きいフォントサイズと組み合わされたなどの）場合にどちらの書式設定が優先になるかに関するデスティネーションシステムのデフォルトの挙動および設計者により選択される好みに応じて一方が他方をオーバーライドする。デスティネーションシステムはまた、ほとんどの一般的なフォーマットはテンプレートフォーマットをオーバーライドしないが、いくつかの稀な、したがって、意図的な書式設定の変更はテンプレートフォーマットをオーバーライドすることを許され得ることを保証するべくレコードを分析してよい。
【０２１３】
ＥＤＩＴ−ＣＥＬＬＳページおよびＥＤＩＴ−ＲＥＣＯＲＤページの追加
訪問者がデスティネーションシステム上のデスティネーションページ内からセルを編集するために、例示的な実施形態によれば、設計者は、Ｅｄｉｔ  Ｃｅｌｌｓページ（図３８）またはＥｄｉｔ−Ｒｅｃｏｒｄページ（図４１）を作成することができる。ページ作成ウェブページから、タイトルを入力し、ページタイプ“Ｅｄｉｔ−Ｃｅｌｌｓ”または“Ｅｄｉｔ−Ｒｅｃｏｒｄ”を選択することにより、それらは同様に作成され得る。Ｅｄｉｔ−Ｃｅｌｌｓページは、訪問者が個々のセルを編集することを可能にするが、訪問者が可視要素（図８８）との対話を始めるまでは、Ｒｅｐｏｒｔページによく似たページを表示する。Ｅｄｉｔ−Ｒｅｃｏｒｄページは、訪問者がレコード（図８９）をブラウズし、行または列を編集および／または削除することを可能にしてよく、デフォルトのフォーム生成を有するＩｎｓｅｒｔページと類似していてよい（図９０）。ページソースは、ページ上に表示されるべきセルの値の範囲であってよく、デフォルトで、どんなセルを編集することができるかを指定する第２の範囲（図４２）は、すべてのセルが編集可能であるようにページソースと一致する。範囲は、ワークシート全体、定義名、および／またはカスタム範囲であり得る。デスティネーションシステムは、データを有するすべてのセルおよびデータを有するものの間のセルを表示するべくソース範囲を調べる。両方の編集ページはまた、ユーザが挿入することによりレコードセットを拡張できるようにするべく、空きスペースの付加的な行および／または列を有し得る。定義名またはカスタム範囲は、該範囲により参照されるセルのみを含むことになる。デスティネーションシステムは、設計者により範囲が指定された後で定義名を作成することによりカスタム範囲オプションを実装し得る。Ｅｄｉｔ−Ｒｅｃｏｒｄページタイプは、ページ上で利用可能な編集ボタンを決定し得る、ＲｏｗまたはＣｏｌｕｍｎの付加的な選択を有する（図４１）。
【０２１４】
両方のタイプの編集ページに関する付加的な設定が“Ｍｏｒｅ”セクションに存在する（図３９および図４２）。設計者は、第１の行／列を用いるか、若しくは、定義名またはカスタム範囲を用いて、“Ｈｅａｄｅｒ  Ｒａｎｇｅ”を指定することができる。ヘッダ範囲が選択される場合、設計者は、これらのヘッダが訪問者により編集可能であるか否かを指定することができる。ヘッダは、ページの第１の列（図９０）、または列Ｅｄｉｔ−Ｒｅｃｏｒｄページの場合には最上行として現れることになる。設計者は、編集可能な範囲を選択することができ、これはメインページソースの中に含まれていなければならない。この編集可能な範囲は、ユーザにより編集可能なすべてのセルであり得る。ページタイトルを示すためのオプション、ページのサーチを可能にするためのオプション、セル間のグリッドラインを表示するためのオプション、および行および列の数字／英字を表示するためのオプションも存在する。
【０２１５】
Ｅｄｉｔ−Ｒｅｃｏｒｄタイプのページに関して、削除および編集を可能にするための付加的なオプションが存在し得る（図４２）。両方ともデフォルトで可能にされる。これにより、デスティネーションページ上の各レコードの傍に付加的な制御が現れることになり得る（図８９）。行／列は、“ａｌｌｏｗ  ｄｅｌｅｔｅ”が選択され、且つ、行／列におけるすべてのセルが編集可能な範囲内にある場合にのみ、ページから削除され得る。行／列は、“ａｌｌｏｗ  ｅｄｉｔ”が選択され、且つ、行／列におけるセルのうちの少なくとも１つが編集可能な範囲内にある場合にのみ、ページから編集され得る。このケースでは、いくつかの態様によれば、実際に編集可能な範囲内にあるセルのみが編集され得る。
【０２１６】
Ｅｄｉｔ−Ｃｅｌｌｓタイプのデスティネーションシステムページを閲覧しているときに、ユーザは、例示的な実施形態によれば、編集するために任意の編集可能なセルをクリックすることができる（編集可能なセル範囲は、ページを作成／編集するときに定義される）。テーブルセルの内容は、一時的に非表示にされ、デフォルト値としてセルの現在の内容を有する、セルの数字フォーマットに依存する入力要素と置き換えられ得る（図８８）。保存ボタンおよび閉じるボタンが同様に可視にされる。テキストセルは、テキストフィールドを表示することになり、１０進法または通貨などの数字フォーマットは、テキストをタイピングするオプションと共に数字ピッカーを表示し、日付は、日付ピッカーを表示し、時間は、時間ピッカーを表示することになる。伝統的なスプレッドシートデータ検証がセルに関して設定される場合、これはまた、ドロップダウンを提示するリスト検証、および数字ピッカーを示す数字と共に、提示される入力要素に影響を及ぼし得る。ページに適用されるデスティネーションシステム検証はまた、日付、時間、またはマップ／ＧＰＳのオプションを有する。日付および時間は、それぞれ、日付ピッカーおよび時間ピッカーを表示することになる。マップ／ＧＰＳは、ユーザがそれらを生成するべくＧＰＳ座標を入力するまたはマップ上をクリックすることを可能にするであろう。これらの値の変更および保存は、スプレッドシート定義におけるセルの値／式を、スプレッドシートツールにおいて行うのと同じ方法で変更することになる。セルが、ＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥ式関数を用いるファイル参照を含む場合、新しいファイルまたはイメージをアップロードするためのオプションがユーザに与えられることになる（図６２）。保存を選択すると、新しいデータがサーバに送信され、編集されたセルの内容を置き換えるべく文字列値が返される。保存ボタンおよび閉じるボタンは、非表示にされてよく、セルは、その値を通常通りに表示する。ファイルがアップロードされた場合、ページがリフレッシュされる。保存ボタンをクリックした後で、以下がサーバに送信され得る：ページｉｄ、新しいセルの値、セルの行および列、データのタイプを記述するセルタイプ、およびデスティネーションシステムページが別のウェブページに埋め込まれるか否かを示すＢｏｏｌｅａｎ。ファイルがアップロードされる場合、ファイルキー、ファイルｉｄ、およびファイルデータが同様に送信される。サーバが編集要求を処理した後で、セルに表示されるべき新しいテキストを指定するＪＳＯＮオブジェクトがクライアントに返送される。
【０２１７】
ＣＡＬＥＮＤＡＲページの追加
Ａｄｄ−ＯｎでＣａｌｅｎｄａｒページが作成され得る（図２７）が、それらはまた、例示的な実施形態によれば、ウェブサイトを通じて作成することができる。Ｃａｌｅｎｄａｒページを作成するために、３つのデータ：Ｅｖｅｎｔ  Ｄａｔｅ（必須、日付によりフォーマットされるセル）、Ｅｖｅｎｔ  Ｔｉｍｅ（随意的、時間によりフォーマットされるセル）、およびＥｖｅｎｔ  Ｔｉｔｌｅ（必須）が用いられ得る。ユーザは、Ａｄｄ  Ｐａｇｅボタンを選択し、次いで、ページタイプとしてＣａｌｅｎｄａｒを選択する。パラメータのそれぞれに関するセル範囲をどのようにして入力するかの２つのオプションが利用可能である。定義された名前およびカスタム範囲。Ｄｅｆｉｎｅｄ  Ｎａｍｅは、ユーザが、付属のＷｏｒｋｂｏｏｋから抽出されるＤｅｆｉｎｅｄ  Ｎａｍｅオプションのリストを選ぶことを可能にする。Ｃｕｓｔｏｍ  Ｒａｎｇｅは、“Ｕｓｅ  ｃｕｒｒｅｎｔ  ｓｅｌｅｃｔｉｏｎ”ボタンを押すことまたはセレクタに手動で入力することのいずれかにより、ユーザが範囲を指定することを可能にする。これらのパラメータが指定された後で、ページを保存することができる。イベントの日付は、唯一必要とされるフィールドであり、タイトルなしのイベントは、デフォルトで“Ｅｖｅｎｔ”に設定され、時間なしのイベントは、デフォルトで“Ａｌｌ  Ｄａｙ”に設定され得る。サーバに変更をアップロードした後で、Ｃａｌｅｎｄａｒページビューは、指定のイベントを含むＣａｌｅｎｄａｒウィジェットを表示する。３つの指定のパラメータソースが抽出され、Ｔｉｔｌｅ、Ｄａｔｅ、およびＴｉｍｅプロパティからなるイベントオブジェクトを構築するのに用いられる。これらのオブジェクトは、次いで、典型的にはそれらの適切な日付内のタイトルリストとして、Ｃａｌｅｎｄａｒウィジェット上に表示される。設計ページ上のサムネイルは、レンダリングされたＣａｌｅｎｄａｒウィジェットを反映するおよびそれと一致する。
【０２１８】
ネストされるＣＯＮＴＡＩＮＥＲページの追加
Ｃｏｎｔａｉｎｅｒページは、別のページの１つまたは複数のインスタンスを含むことができるページである。それらは、ページ作成中にＴｙｐｅドロップダウンから‘Ｃｏｎｔａｉｎｅｒ’を選択することにより作成される。コンテナページを作成するのに用いることができる、少なくとも３つの異なるモードが存在し得る。ＵＩのボタンを介して選択することができる、Ｅａｓｙ、Ａｄｖａｎｃｅｄ、およびＧｒａｐｈｉｃ  Ｄｅｓｉｇｎｅｒ（図２９）。
【０２１９】
Ｅａｓｙモードは、サブページをグリッドレイアウトでレンダリングし得る。コンテナに含まれることになる、列の数とサブページとの２つのデータが必要とされ得る（図２９）。最終的なレイアウトでの行の数は、いくつのページがコンテナのために選択されるかに依存することになる。
【０２２０】
各サブページは、Ｅａｓｙモード作成中にドロップダウンメニューを介して選択される。ドロップダウンは、レンダリングされたページ上のどこに各サブページが現れることになるかを反映するグリッドにレイアウトされる。ページが追加される際に、さらに付加的なページを追加することができるように、ドロップダウンの新しいブランクの行が付加され得る。新しいページを作成し、これをコンテナに追加するためのオプションも存在し、これはコンテナ自体が保存されるときに保存され得る。同様に、列の数が変更される場合に、ドロップダウンは、新しい列のカウントを反映するべく追加または削除され得る。Ｅａｓｙモードで作成されるコンテナにおける列の数は、或る数、例えば、３に制限される場合もある。
【０２２１】
Ａｄｖａｎｃｅｄモードは、Ｃｏｎｔａｉｎｅｒページの表示のさらなる制御を可能にするＷＩＳＹＷＹＧ−“Ｗｈａｔ  Ｙｏｕ  Ｓｅｅ  Ｉｓ  Ｗｈａｔ  Ｙｏｕ  Ｇｅｔ”−リッチテキストエディタを用い得る（図３０）。エディタは、フォントサイズおよび色、ボールドテキスト、箇条書きリストなどのような高度な書式設定を可能にする。ユーザは、ユーザがコンテナに入れることを望むどんなテキスト型データもコンテナに入れることができる。保存されるときに、テキスト型データは、ＨＴＭＬテンプレートとして保存される。
【０２２２】
Ａｄｖａｎｃｅｄモードを介して作成されたコンテナ内にサブページを含めることは、例示的な実施形態によれば、テキスト“｛｛“および”｝｝”で囲まれるページ名をタイピングすることにより行われ得る。例えば、文言“｛｛ＤａｔａＰａｇｅ｝｝”をタイピングすることにより、コンテナに“ＤａｔａＰａｇｅ”という名前のページが含まれることになる。Ｃｏｎｔａｉｎｅｒページがレンダリングされるときに、テンプレートが、“｛｛“マーカと”｝｝”マーカとの間にある文言に関してサーチされる。文言が、システムにおける有効なページ名と一致する場合、文言は、一致するページのＨＴＭＬレンダリングに置き換えられる。Ａｄｖａｎｃｅｄモードの利点は、いくつかのＴｅｘｔタイプのページを作成する必要なしに、いくつかのページを、テキストが織り込まれた状態でレイアウトできることである。これはまた、Ｃｏｎｔａｉｎｅｒページの最終的な外観のさらなる制御を可能にする。
【０２２３】
Ｇｒａｐｈｉｃ  Ｄｅｓｉｇｎｅｒモードは、Ａｄｖａｎｃｅｄモードと類似しているが、フルＨＴＭＬテキストエディタおよびプレビュー機能が含まれ得る（図３１）。Ｇｒａｐｈｉｃ  Ｄｅｓｉｇｎｅｒのエディタは、エディタの最上部に存在するタブを用いることにより、“Ｅｄｉｔ  ＨＴＭＬ”ビュー、“Ｐｒｅｖｉｅｗ”ビュー、および“Ｅｄｉｔｏｒ”ビューの間で切り替えることができる。
【０２２４】
“Ｅｄｉｔｏｒ”タブは、Ａｄｖａｎｃｅｄモードエディタと同じエディタを含む。ＨＴＭＬエディタは、“Ｅｄｉｔ  ＨＴＭＬ”タブの下に存在する。ＨＴＭＬエディタを用いて、ユーザは、Ｃｏｎｔａｉｎｅｒページの最終的な外観のより一層の制御を可能にする任意のマークアップを入力することができる。“Ｐｒｅｖｉｅｗ”タブ機能は、現在のマークアップを取り上げ、これをレンダリングし、ゆえにユーザは、普通にページを保存および閲覧する必要なしに、レンダリングされたテンプレートの外観をすぐに見ることができる。
【０２２５】
ＡｄｖａｎｃｅｄとＧｒａｐｈｉｃ  Ｄｅｓｉｇｎｅｒは、両方とも現在のページのリストが右側にあることを特徴とする。このリストからページがクリックされるときに、ページは、現在のカーソル位置でテンプレートに自動的に挿入され得る。
【０２２６】
ＡｄｖａｎｃｅｄモードおよびＧｒａｐｈｉｃ  Ｄｅｓｉｇｎｅｒモードはまた、“Ｉｍｐｏｒｔ  Ｆｒｏｍ  Ｅａｓｙ  Ｍｏｄｅ”へのボタンを有し得る。この機能を用いるために、最初にＥａｓｙモードを用いてデータが入力される必要があり得る。押されたときに、ＡｄｖａｎｃｅｄおよびＧｒａｐｈｉｃ  Ｄｅｓｉｇｎｅｒのエディタは、コンテナがＥａｓｙモードであったときのオリジナルの外観と一致するテンプレートが事前に充填されることになるであろう。
【０２２７】
すべてのＣｏｎｔａｉｎｅｒモードに関して、１つまたは複数のルールが作成を制限し得る。１つ目は、Ｃｏｎｔａｉｎｅｒページが、１回よりも多く同じＩｎｓｅｒｔタイプページを含むことができないことである。２つ目は、コンテナが、該コンテナ自体を、または無限ループを生じることになる別のＣｏｎｔａｉｎｅｒページを含むことができないことである（コンテナループの例：ページ‘Ａ’はページ‘Ｂ’を含むが、ページ‘Ｂ’も‘Ａ’を含む）。これらのルールは、保存時にチェックされ、違反する場合、コンテナの作成が防止され得る。
【０２２８】
Ｗｅｂｉｆｉｅｒは、レコードリストと、挿入などの訪問者のアクションのためのユーザインターフェースとの両方が、例示的な実施形態によれば、スプレッドシートツール内の非技術系の設計者により概ね定義されることを可能にする。すべてのこれらのＲｅｐｏｒｔタイプは、ソースまたはＴｅｍｐｌａｔｅ  Ｓｏｕｒｃｅｓとして、レコードの集計データを表す式、集計データを表すチャート、または本質的にスプレッドシート上で可視の何でも有するスプレッドシートを有し得る（図９８）。例えば、Ｉｎｓｅｒｔページは、次のレコードを入力する際に訪問者を助けるために、以前に挿入されたレコードについての参照情報、またはこれまでのすべてのレコードのグラフを有することもできる。データとインターフェースとの関係性は、設計者により非常に広く定義可能なままにされている。ソースデータのためのスプレッドシートを用いることとそしてまたユーザインターフェースのレイアウトおよび設計のためのスプレッドシートを用いることとの組み合わせの融通性の度合いは意外にも高く、これまでソフトウェア開発経験またはトレーニングを有していない数百万人のユーザに新しい能力を与える。
【０２２９】
Ｃｏｎｔａｉｎｅｒページタイプはまた、Ｔａｂｓ  Ｃｏｎｔａｉｎｅｒタイプであり得る（図４９）。複数のサブページを同じページ上に例えば複数の列に配置するのではなく、各サブページは、デスティネーションページが訪問者にロードされるときに別個のタブとして表示されることになる（図９８）。
【０２３０】
式別のネストされたコンテナページ
コンテナページは、コンテナの定義、例えば、表示するサブページの列の数および表示するサブページが、コンテナテンプレートシートによって定義され得る付加的なモードを有し得る。コンテナテンプレートシートのセルは、いくつかの態様によれば、単にサブページまたは他の一意の識別子の名前であってもよく、シート内で利用される列の数は、コンテナページ上に表示されるサブページの列の数を表すであろう。これにより、設計者にかなりの柔軟性を持たせることができる。例えば、設計者は、セルＡ１：Ａ３などの複数の列にわたってセルをマージし、その周囲に境界線を置き、セルコンテンツをテキスト「ヘッダページ」に設定して、ヘッダサブページが境界線を有し、データおよび他のテンプレートがどのように定義されるかと一致する身近な方法で３列にまたがることを示し得る。設計者はまた、どのサブページを訪問者に示すべきかを示すために式を使用し得る。“＝ＩＦ（Ｉｔｅｍ．Ｃｏｕｎｔ（Ａ：Ａ）＞５０、‘Ｌｉｎｅ  Ｇｒａｐｈ  Ｐａｇｅ’，‘Ｂａｒ  Ｃｈａｒｔ  Ｐａｇｅ’）”などの式は、カウント内に多くのアイテムがあるときに、折れ線グラフが示されるが、アイテムが少ないときに棒グラフが示されるように、示されるサブページを変更する。“＝ＩＦ（ｉｔｅｍ．Ａ１＜ＥＤＡＴＥ（ＮＯＷ（），−１），‘Ｒｅａｄｏｎｌｙ  Ｐａｇｅ’，‘７Ｅｄｉｔａｂｌｅ  Ｐａｇｅ’）”などの式は、レコードを１ヶ月後まで編集することを可能にし、その後、そのページは、編集制御とは対照的に読み取り専用ビューを提示することができる。
【０２３１】
Ｗｅｂｉｆｉｅｒは、コンテナページを含む任意の種類のテンプレートのセルが、テキストとは対照的にＨＴＭＬマークアップとして訪問者ブラウザにデスティネーションシステムによって配信されるＨＴＭＬマークアップテキストを含むことを可能にし得る。設計者は、ページ構成オプションなどを通じて、マークアップとして検出され、配信されるＨＴＭＬマークアップでどのページをレンダリングすべきかを指定し得る。加えて、かつ／または代替的に、設計者は、特定のセルまたは領域がＨＴＭＬマークアップレンダリングを許可されるべきであることをｗｅｂｉｆｉｅｒに指示することによって、どの特定のセルがレンダリングされるべきかを指定し得、ｗｅｂｉｆｉｅｒは、メタデータとして、かつ／またはシートとは別個にそのような嗜好を格納し得る。
【０２３２】
ＣＳＶ  ＩＭＰＯＲＴページの追加
ＣＳＶ  Ｉｍｐｏｒｔページ（図８６）は、例示的な実施形態によれば、訪問者がＣＳＶファイルから一度に複数の行をスプレッドシートに挿入することを可能にする。設計者は、ＣＳＶ  Ｉｍｐｏｒｔページに関するソースとしてワークシート、定義名、またはカスタム範囲を選択することができる（図３３）。このソースは、ページ上のどこに新しいデータが入力されることになるかを指定する。これは、インポートされるＣＳＶファイルにおいて可能な列の数を制約するまたはしない場合がある。例えば、＄Ａ＄１：＄Ｃ＄１の範囲をカバーする定義名ソースは、３つの列を有するＣＳＶファイルのみ可能にすることになり、データは、列Ａ、Ｂ、およびＣにわたる最高の利用可能な行に挿入されることになる。
【０２３３】
このページを用いるときに、訪問者は、挿入されるべき列の期待される数を伝えられ得る。それらはまた、ＣＳＶファイルの第１の行を除外するためのオプションを有し得る。訪問者は、次いで、標準のファイルアップロード制御を用いてＣＳＶファイルを選択し、ページをサブミットする。ページは、アップロード制御を、．ＣＳＶ拡張子のみを受け入れるように制限し得る。ページがデータを含まないまたは不適切にフォーマットされたデータを含む場合、エラーが返される（図８７）。
【０２３４】
各行は、Ｉｎｓｅｒｔ  Ｒｅｃｏｒｄページと同じ方法で、ソースにより指定される列に１つずつ挿入され得る。後述するデータ検証が依然として適用され、ゆえに、いずれかの値がセルに課された制約を満たさない場合、インポートが拒否され、制限され、または他の方法で修正され、訪問者に警告されることになる。挿入が成功する場合、訪問者は、挿入された行の数を表示する成功メッセージを受信し得る。
【０２３５】
埋め込み型スプレッドシートページの追加
タイトルおよびソース範囲で指定され得る別のページタイプは、例示的な実施形態によれば、埋め込み型スプレッドシートページである。このページタイプは、埋め込み型スプレッドシート・インターフェースを訪問者に表示し、スプレッドシートの設計者により指定された部分の値および式を設計者がするのと同じ方法で訪問者が編集することを可能にする。スプレッドシート制御の実装は、包括的である必要はなく、訪問者がスプレッドシート外のデータを参照するどのような能力を有することも必要としない。この実装は、データをスプレッドシート定義フォーマットで受け入れ、訪問者が保存すると、結果的にスプレッドシート定義フォーマットを生成する、多くの市販のスプレッドシートウェブ制御のうちの１つを利用することができ、この場合、セルの式またはセルの値は、スプレッドシート制御に提供される一時的なシートにおよびそこから１つずつ容易にコピーされ得る。
【０２３６】
付加的なページタイプ
Ｗｅｂｉｆｉｅｒは、例示的な実施形態によれば、複数の他のページタイプを同様の様態でサポートすることができる。例えば、前述の“ｒｅｐｏｒｔ”ページタイプと類似しているが、デスティネーションシステムは、Ｒｅｐｏｒｔページのｈｔｍｌを、訪問者がそのＰＤＦページのＵＲＬにアクセスするときにブラウザまたはモバイルアプリケーションによりダウンロードされ開かれるＰＤＦドキュメントへ変換するまたは印刷する付加的なステップを行うためにＰＤＦライブラリへの市販のコンバータまたはプリントを用いてよい。
【０２３７】
ページタイプの別の例は、外部ウェブページをデスティネーションページ上のフレームに埋め込むことであり、この場合、フレームのＵＲＬが、ページを作成するときにページ構成において指定され、またはこれが静的な値によりまたは式により提供されることを可能にするスプレッドシート定義における指定のセルをデリファレンスすることにより得られる。これは、スプレッドシートレコードデータが、訪問者が差し向けられるウェブページを定義するべきであるシナリオで特に有用であり得る。
【０２３８】
スプレッドシート定義の抽出
スプレッドシートが定義されると、ｗｅｂｉｆｉｅｒは、例示的な実施形態によれば、スプレッドシート定義に基づいてデスティネーションシステムページを生成し得る。スプレッドシート定義がデスティネーションシステム上に持続的に格納される例では、プロセスは、適用可能なソース範囲内に入るセルの定義を抽出し、利用可能にすることで始まる（図２のステップ２０７）。スプレッドシート定義がｘｌｓｘファイルフォーマットで始まる場合、ファイルは、ＸＭＬフォーマットの中身を取得するべく解凍され得る。初歩的な文字列パーシングから洗練されたパーシングまでの様々なＸＭＬパーシングオプションが、通常は、ＸＭＬパーシングライブラリにおける関数を呼び出すことにより行われ、セルおよびそれらの属性を含む個々のデータセクションのすべてを通して反復するために、並びに、それらをインメモリオブジェクト指向クラスおよびインスタンスなどの代替または中間フォーマットへロードするために便利なアクセスを提供するのに用いられる。代替的に、ｘｌｓｘ、ＭＳ−ＸＬＳＢ、ＳｐｒｅａｄｓｈｅｅｔＭＬ、ＯＤＳフォーマット、および同様のスキーマに適合する市販のスプレッドシートファイルフォーマットパーサが、スプレッドシートのデータを、スプレッドシートデータにおいて典型的に見受けられる属性およびフォーマットに便利に特化されたオブジェクト指向クラスで明らかにするのに用いられ得る。
【０２３９】
スプレッドシート定義が持続的に格納されず、代わりに、中間またはデータベースフォーマットで持続された例では、上記のステップのうちのいくつかは依然として適用されるが、それらは、デスティネーションシステムページに関する要求がシステムにより受信される際にオンデマンドで行われるのではなく、設計者がスプレッドシート定義を提供した直後に、より早い段階で、システム上のすべてのシートに関して行われ得る。中間フォーマットは、これらのステップに部分的により早い段階で従うことおよび部分的に要求ごとに従うことを含み得る。例えば、早い段階は、ｘｌｓｘファイルを受け入れ、これを解凍し、必要なファイルを、まだそれをさらに解析しない、シート全体を表すデータベースレコードへ変換し得る。その場合、デスティネーションシステムへの各ページ要求中のステップはより少ない。
【０２４０】
書式設定および属性の変換
ステップ２０７および／または２０９（図２）中に、データは、中間フォーマットに変換されてよく、これは、例示的な実施形態によれば、関連するデータ属性を、スプレッドシートクラスではなくＣＳＳまたはＨＴＭＬクラスにより近く似ているクラスでより便利にアクセス可能にし得る。例えば、クラス上のプロパティ名は、ＣＳＳのプロパティ名と一致してよく、または“ＯｂｔａｉｎＣＳＳＤｅｆｉｎｉｔｉｏｎ（）”などのクラスに対するいくつかの方法が存在し得る。しかしながら、中間フォーマットの便利さは必要とされず、代替的に、ｗｅｂｉｆｉｅｒは、ＣＳＳおよびＨＴＭＬのデスティネーションページの出力フォーマットに従ってデータを格納してよい、または、データをオリジナルのスプレッドシートフォーマットで格納し、後でストリームを中間ストレージなしに出力フォームへまっすぐに向けてよい。例えば、列の幅を処理するために、ＸＭＬスニペット“＜ｃｏｌ  ｍｉｎ＝“１”  ｍａｘ＝“２”  ｗｉｄｔｈ＝“１１．８”＞”の“ｗｉｄｔｈ”属性の値を読み出し、ＣＳＳによりサポートされるユニットに変換し、結果的に生じる列クラスの“ｃｓｓｗｉｄｔｈ”プロパティを格納する、またはこれをＣＳＳ出力ストリーミング機能の一部として“ｗｉｄｔｈ：１００ｐｘ；”としてストリーム出力することもできる。
【０２４１】
伝統的なスプレッドシートに一般的な、スプレッドシート定義内で見受けられる条件付き書式設定エントリは、設計者が指定した式がセルの書式設定の定義と関連付けられるかについてデスティネーションシステムに式評価を行わせ得る。デスティネーションシステムがデスティネーションシステムに関する訪問者要求に応答するときに式をｔｒｕｅに評価する場合、条件付き書式設定エントリ内に含まれる書式設定は、デスティネーションページが異なる書式設定をもつ要素を有することになるように、同様にｃｓｓに変換されることになる。
【０２４２】
ページタイプによる出力の変化
訪問者に送信されることになるＣＳＳテキスト定義に関するストリームへのオブジェクトのプロパティのシリアライズの一部として、デスティネーションシステムは、例示的な実施形態によれば、どんな種類のページタイプおよびどんなタイプの訪問者デバイス特徴が所与のターゲットページに適用可能であるかなどのファクタを考慮に入れ得る。例えば、ページが“ｒｅｐｏｒｔ”タイプのものである場合、ｗｅｂｉｆｉｅｒは、“＜ｔｄ＞Ｃｅｌｌ  Ｔｅｘｔ＜／ｔｄ＞”のようなＨＴＭＬ  ＴＤセルとしてのボーダーを有するセルおよび“ｔｄ｛ｂｏｒｄｅｒ：１ｐｘ  ｓｏｌｉｄ  ｂｌａｃｋ；  ｝”などのいくつかの関連するＣＳＳを出力し得る。しかしながら、ページが“ｅｄｉｔ  ｄｅｔａｉｌｓ”タイプのものであり、且つ、セルが編集することができるセルとして指定される範囲内に入る場合、ｗｅｂｉｆｉｅｒは、代わりに、所望の入力制御のスタイルに応じて“＜ｔｄ＞＜ｉｎｐｕｔ  ｔｙｐｅ＝ｔｅｘｔ  ｖａｌｕｅ＝”Ｃｅｌｌ  Ｔｅｘｔ”／＞＜／ｔｄ＞”として同じセルおよび異なるＣＳＳを出力し得る。
【０２４３】
他のタイプの出力は、より一層特化され得る。例えば、Ｃａｌｅｎｄａｒのページタイプは、セルをレンダリングすることを試みる代わりに、クライアント側で訪問者が指定するように数か月間ブラウズすることまたはウィークリーまたはアジェンダビューに切り替えることのような特徴と対話式に表示されるように、カレンダー制御（図２７のサムネイル内）などの第三者ウィジェットにより受け入れ可能な文字列フォーマットにレンダリングし得る。デスティネーションシステムはまた、名前列およびＧＰＳ座標列を有するシートを、指定の場所を有するマップをレンダリングするべく第三者サーバと対話する第三者マッピングアプリケーションウィジェットにより受け入れられるカンマ区切りのリストに文字列レンダリングし得る。
【０２４４】
データ検証
往々にして、スプレッドシートツールは、データ検証能力を含む。例えば、データ検証ルールは、スプレッドシートツールで指定することができ、その場合、セルは、特に、整数のみ可能にする、１０進数のみ可能にする、指定の最小範囲および最大範囲内の数のみ可能にする、おそらく最小範囲および最大範囲内の日付または時間のみ可能にする、可能な文字の最大数を制限する、または必要な文字の最小数を制限するべきである。データ検証はまた、セルが、リストで指定される値のうちの１つを含むことのみ可能にするように設定することができる。リストは、値のシンプルテキストリストとしてデータ検証定義中に提供することができ、または、スプレッドシート上のセルの範囲への参照を指定することができ、その場合、ツールは、そこから容認できる値のリストを得ることになり、該セルに関するスプレッドシートツール内にドロップダウン制御を生じさせることができる。データ検証はまた、結果的にｔｒｕｅを返す典型的なスプレッドシート式を生じることになる値のみを可能にするように設定することができる。例えば、セルＢ１に関して、式は、“＝ＯＲ（Ｂ１＞＝０，ＡＮＤ（Ａ１＝０，Ａ２＜４０））”を指定することもでき、この場合、Ｂ１は、正の数とすることができ、またはセルＡ１がゼロであり、且つＡ２が小さい数である場合に、負とすることができる。いくつかのツールは、ブランク値が検証をパスすることを可能にするべく例外を指定することを可能にする。例示的な実施形態によれば、デスティネーションシステムは、スプレッドシートおよびスプレッドシートセル定義から設計者が指定した上記のデータ検証タイプおよびオプションのすべてを読み出すことができる。データ検証は、セル定義ＸＭＬ上とすることもでき、またはデータ検証ルールは、ルールが適用されるセルのリストと共に、スプレッドシート定義におけるグループとしてどこか別の場所で定義することもできる。デスティネーションシステムは、スプレッドシート定義から該情報を抽出および処理してよい。スプレッドシート内で適用されたデータ検証ルールを有するセルに対応するデスティネーションシステムからの値の挿入または編集などの入力中に、デスティネーションシステムは、訪問者の入力値をこれらの検証ルールと比較して評価することになる。評価は、サーバ上で行うこともでき、または例えば要求がサーバへ送信される必要なしにユーザの入力を評価することになるクライアント側ＪａｖａＳｃｒｉｐｔにルールを渡すことにより行うこともできる。データ検証に失敗する場合、訪問者に値を訂正する機会を与えるべくラベルまたはポップアップ警告が示されてよい。データ検証ルールが、そこから容認できる値のリストを得るためのセル参照に関係していた場合、またはデータ検証ルールが、ｔｒｕｅ評価を必要とする式に関係していた場合、システムは、式を評価するのに必要とされるまたはシステムが容認できる値のリストを知るのに必要とされる他のセルの値をデリファレンスしてよく、これは次に、訪問ユーザの入力を可能または不可能にすることになる。スプレッドシート定義が、日付に基づくルールを指定する場合、デスティネーションシステムは、ユーザがそこから日付を選ぶべくポップアップのカレンダー制御を有するように、挿入または編集フォーム上に出力される制御を修正してよく、随意的に、無効な値が警告付きでタイプされるがサーバへサブミットされないようにするのではなく、無効な値が最初から指定されるのを防ぐために、テキストボックス制御自体にタイピングすることは不可能にされる。
【０２４５】
“Ａ１＝０”などのスプレッドシートスタイルの検証を超えて進むために、デスティネーションシステムは、サーバから取得される情報でセルの値を自動的に設定する、“Ｃｕｒｒｅｎｔ  Ｕｓｅｒ”または“Ｃｕｒｒｅｎｔ  Ｄａｔｅ”などの検証を設計者が追加することができる、ページ作成中の付加的なオプションを有する。マップまたはＧＰＳ座標制約を指定することも可能であり、ユーザは、ＧＰＳ座標を入力するかまたは座標を生成するべくマップ上のどこかを選択することもでき、それらはまた、値に関する正しいＧＰＳ書式設定となるように検証されることになる。外接矩形をもたらすデスティネーションシステムに指定される最小領域および最大領域を有することにより、境界として指定されるポリゴン、または“Ｅｕｒｏｐｅ”のような事前定義されたポリゴンを有することにより、ＧＰＳ座標のより深い検証も可能である。他の便利なデータバリデータも、それらが伝統的なスプレッドシートツールバリデータと同じ効果を有する場合であっても利用可能である。例えば、設計者が有効な値のリストを指定することを可能にするバリデータ（図８０）が利用可能であり、結果的にＩｎｓｅｒｔページ上でレンダリングされるドロップダウン制御を生じる。第２の例は、どんな日付が選択されるかを制限することができる日付バリデータである（図７９）。
【０２４６】
デスティネーションシステムは、入力フォーム（図９３）、ＣＳＶ  Ｉｍｐｏｒｔページ（図８７）、または外部自動化ｗｅｂｉｆｉｅｒ  ＡＰＩ呼び出しなどの入力方法を含む訪問者入力の方法に関係なくデータ検証ルールを実施し得る。
【０２４７】
一過性データ
Ｗｅｂｉｆｉｅｒでは、あらゆる種類のシートは、長期にわたってすべてのユーザ間で一貫性がないシートデータの同時バージョンである一過性データを含んでよい。例えば、配信されている単一のデスティネーションページに固有のデータ、訪問者ブラウザセッションごとのデータ、１日あたりなどの周期的なデータ、訪問者あたりであるがブラウザセッションにわたって持続的であるデータ、役割またはユーザグループごとであるが永続的であるデータ、および／または１日あたりの訪問者あたりなどの上記の組み合わせを含む、いくつかのタイプの一過性データが存在する。デスティネーションシステムは、一過性データがブラウザセッションのグループに適用されるように、訪問者ブラウザセッションの開始または終了時に一過性データを継続して使用するか、またはリセットするように訪問者に要求し得る。すべての種類の一過性データについて、データは、デスティネーションシステム内に格納され、アクセスがログされ、視聴および修正のために設計者ユーザに利用可能であり、非一過性データと同様に利用するためにｗｅｂｉｆｉｅｒシステムの他のコンポーネントに利用可能であり得る。
【０２４８】
データは、アプリごと、ページごと、シートごと、列または行ごと、範囲ごと、かつ／またはセルごとを含む様々なレベルの粒度で設計者によって一過性として宣言され得る。宣言は、アプリまたはページ構成オプションなどのデスティネーションシステム管理ページ上に提示される構成オプションなどの様々な方法を、オートゲンシートのためなどに自動的に使用する設計者によって、すべての一過性範囲の編集可能なリストを有する構成シートによって、かつ／またはその一過性種類を示すためにシート、範囲、またはシートのコンポーネントを選択する設計者によって提供することができる。宣言は、デスティネーションシステムの構成オプションと共に、かつ／またはシートまたはシートコンテンツ上のメタデータとして含む、様々な方法に格納され得る。
【０２４９】
例えば、訪問者が自分の金融パラメータをウェブページに入力して自分の住宅ローン返済のグラフを見ることを可能にする銀行のための住宅ローン計算機アプリの設計者は、デスティネーションシステムのアプリオプションを介してアプリ全体を一過性に設定し、一過性が個々のブラウザセッションにスコープされることを示し得る。結果として得られるアプリは、すべての訪問が元のデータから始まる可能性があり、訪問者が行ったすべての変更は、他の訪問者や同じ訪問者による将来の訪問に影響を与えることはない。別の例は、基礎となるレコードシートが一過性であり、一過性がユーザごとにスコープされる「Ｔｏ−Ｄｏ」ページであり、その結果、各ユーザは、複数のデバイスからアクセスすることができる編集セルまたはレポートページタイプ上にそれぞれの永続的なＴｏ−Ｄｏのリストを有し、同じページに訪問する他のユーザは、ユーザ間でＴｏ−Ｄｏを共有しない別個のリストを有する。もうひとつの例は、従業員全員でページを共有して、各従業員が今日オフィスにいるかいないかを示すアプリであり、ｉｎ／ｏｕｔ列は一過性で、日付までスコープされているため、従業員は毎朝「ｉｎ」に自分自身を設定して他のすべてのユーザに到着したことを示し、前日に「ｏｕｔ」と自分自身をマークし忘れた従業員は、その値が数日の間に空白にリセットされる可能性があるため、到着前の翌日にいることを誤って示すことはない。
【０２５０】
別の例は、訪問者のデスティネーションページ上に付加的なナビゲーションを構築するための技術を実証し、訪問者はドロップダウンリストから国を指定することができ、その国に特有のデータが示されるであろう。設計者は、２つのサブページを持つページコンテナを作成する。一方はレポートページ、他方はレポートページのナビゲーション制御として使用されるドロップダウンを有する編集ページである。編集ページのテンプレートは、各ページ配信のスコープで一過性に設定されたスプレッドシートセルＡ１を有する国ドロップダウン参照を有し、レポートページのテンプレートは、セルＡ１を参照する条件論理を有するスプレッドシート式を有する列を有し、Ａ１の値に依存して式の結果を変化させる。例えば、式が“＝ＩＦ（Ａ１＝‘Ｃａｎａｄａ’，‘ｎｏｒｔｈ’，ＩＦ（Ａ１＝’ＵＳ’，’ｓｏｕｔｈ’，‘ｕｎｋｎｏｗｎ’）”である場合、ドロップダウンを“Ｃａｎａｄａ”に設定する訪問者は、レポートページが“ｎｏｒｔｈ”を示すのを、ドロップダウンを“ＵＳ”に変更すると、“ｓｏｕｔｈ”を示すのを確認する。レポートの多くのセルは、国に関する完全なレポートを提供するためにドロップダウンの一過性の値に応じて変化し得るが、ページへの同時訪問者の多くは、それぞれ自分のナビゲーション国の選択に対応する値を確認し、他のユーザのナビゲーション選択または以前のブラウザセッションにおける自身の選択の影響を受けないであろう。しかしながら、この例では、デスティネーションシステムは、一過性ナビゲーション選択を依然として格納し得る。
【０２５１】
同様に、一過性データは、セル範囲を動的に計算する式によって参照されてもよく、それは、ページのソース構成によって次いで、訪問者が現在選択しているが、編集された値自体が非一過性であるであろう国にのみ影響する値を訪問者が確認し、編集するように、どの範囲を表示し、かつ編集するかを指定するために使用されてもよい。一般に、スプレッドシートを主な方法論として使用して、一過性および非一過性のユーザインターフェースおよび／またはデータの両方を組み合わせる能力は、部分の合計よりも大きい値および柔軟性を有する。
【０２５２】
ｗｅｂｉｆｉｅｒは、いくつかの実装では、各一過性のスコープについてアプリ全体を複製する簡略化されたアプローチを介して一過性機能を提供し得る。加えて、かつ／または代替的に、より高いパフォーマンスのために、ｗｅｂｉｆｉｅｒは、ＳＱＬデータベースを利用して、別個のレコード内に格納された各スプレッドシートセルのコンテンツをテーブルに格納し得る。いくつかのタイプの一過性データの格納をサポートする簡略化された例示的なデータベースレコードフォーマットは、他の列の中に以下の列を含み得る：ｇｕｉｄ  ＩＤ、ｉｎｔ行、ｉｎｔ列、ｇｕｉｄ  ｕｓｅｒＳｃｏｐｅ、ｇｕｉｄ  ＳｅｓｓｉｏｎＳｃｏｐｅ、テキストコンテンツ、テキストフォーマット、ＤａｔｅＴｉｍｅ作成Ｔｉｍｅｓｔａｍｐ、およびＤａｔｅＴｉｍｅ  ｌａｓｔＭｏｄｉＦｉｅｄＴｉｍｓｔａｍｐ。そのようなデータベースレコードフォーマットは、任意の所与のセルの複数の同時バージョンをサポートし得る。任意のセルの一次非一過性バージョンを取得するために、ＳＱＬクエリは、例えば、条項のどこに“ｕｓｅｒＳｃｏｐｅ  ｉｓ  ｎｕｌｌ  ａｎｄ  ＳｅｓｓｉｏｎＳｃｏｐｅ  ｉｓ  ｎｕｌｌ”を含み得る。一過性オプションのいくつかのレイヤーが有効である場合、ＳＱＬクエリは、ＳｅｓｓｉｏｎＳｃｏｐｅセットを有する任意のレコードを戻す単一のネストされたクエリで最も関連するセル値を、そうではなく見つからない場合、ユーザスコープセットを有するレコードを、そうではなく見つからない場合、一次非一過性バージョンを取得することができる。このようなＳＱＬデータベースストレージでは、設計者が対象のセルの上の行を挿入する場合、ＳＱＬ更新クエリは、挿入されたセルの下のすべてのセルの行を増分し得るが、同じ単一クエリを有するセルのすべての一過性バージョンも増分し得る。
【０２５３】
Ｗｅｂｉｆｉｅｒは、閲覧し、レポートを作成し、集計のための式で使用し、各ユーザの一過性値の編集を可能にする編集ページを作成し、かつ／または非一過性セルが使用され得るあらゆる方法で利用するために、データの一過性バージョンを設計者にアクセス可能にし得る。ｗｅｂｉｆｉｅｒは、一過性を有する任意のシートを開くときに、設計者がスコープの任意のインスタンスを指定することを可能にし得る。例えば、設計者がユーザスコープごとに有するシートＡＢＣを開くことを示す場合、ｗｅｂｉｆｉｅｒは、非一過性バージョンを閲覧し、かつ修正するべきか、または提供されたリストからユーザを選択してユーザの一過性バージョンＡＢＣを開くべきかどうかを設計者に尋ね得る。ｗｅｂｉｆｉｅｒはまた、シートが各一過性バージョンについての行および各セルアドレスについての列を有する設計者にオートゲンおよび／または仮想シートを提供する方法を使用することによって設計者へのアクセスを可能にし得る。例えば、一過性スコープがユーザごとである、ＢａｓｅＲｅｃｏｒｄＳｈｅｅｔ！Ａ１：Ｂ２シートのセルの一過性の範囲の場合、ＡｕｔｏＧｅｎＴｒａｎｓｉｅｎｔＳｈｅｅｔ上の列ヘッダは、ラベル“ｕｓｅｒ”、“ｃｅｌｌＡ１”、“ｃｅｌｌＡ２”、“ｃｅｌｌＢ１”、“ｃｅｌｌＢ２”を有する列を識別し得、続いて、非一過性値を示すためのブランクユーザを有する行を、続いて、一過性値を有する各ユーザの行を識別し得る。値、式、またはさらにはフォーマットは、ｃｅｌｌＡ１列のような列の各値ごとに変化し得る。次いで、設計者は、“Ｈｉｇｈｅｓｔ  Ｌａｂｅｌ”と従来のスプレッドシート式“＝ＭＡＸ（ＡｕｔｏＧｅｎＴｒａｎｓｉｅｎｔＳｈｅｅｔ！  Ｂ３：Ｂ１０００）”は、非一過性の行を除外し、すべてのユーザがセルＲｅｃｏｒｄＳｈｅｅｔ！Ａ１に設定した最大値を表示する関連するレポートページを作成することができる。設計者は次いで、ＡｕｔｏＧｅｎＴｒａｎｓｉｅｎｔＳｈｅｅｔ全体のデータソースを有する編集セルページを作成してもよく、デスティネーションページへの訪問者が他のユーザの一過性値を修正することを可能にする。
【０２５４】
Ｗｅｂｉｆｉｅｒはまた、ｔｒａｎｓｉｅｎｔＳｃｏｐｅが“ｕｓｅｒ”などのスコープキーワードとユーザ名またはＧＵＩＤなどの識別子との連結であってもよく、アプリが単純な名前またはＧＵＩＤであってもよい、ｔｒａｎｓｉｅｎｔＳｃｏｐｅ！！！ａｐｐ！！ｓｈｅｅｔ！ｓｔａｒｔｃｅｌｌ：ｅｎｄｃｅｌｌへの範囲参照のための従来のｓｈｅｅｔ！ｓｔａｒｔｃｅｌｌ：ｅｎｄｃｅｌｌ構文を拡張することによって、設計者へのアクセスを可能にし得る。例えば、セルは、式“＝ＡＶＥＲＡＧＥ（ｇｒｏｕｐ−ｅｍｐｌｏｙｅｅｓ！！！Ｆｏｒｅｃａｓｔ！ｐｒｏｊｅｃｔｓ！Ｂ１：Ｂ１０００）”を有してもよい。デスティネーションシステムは、通常の方法で式を評価するために構文を解析し、Ａｄｄ−Ｏｎは、スプレッドシートツールに、プレースホルダ値を設計者に表示させ得るか、またはＡｄｄ−Ｏｎは、デスティネーションシステムにＡＰＩ呼び出しを行い、実際の値をスプレッドシートツールに提供し得る。あるいは、付加的なオーバーロードバージョンのスプレッドシート関数は、“＝ＡＶＥＲＡＧＥＥＸ（ｔｒａｎｓｉｅｎｔ  ｓｃｏｐｅ  ｔｅｘｔ，ａｐｐ  ｔｅｘｔ，ｓｈｅｅｔ！ｓｔａｒｔｃｅｌｌ：ｅｎｄｃｅｌｌ）”などのパラメータを提供され得る。
【０２５５】
Ｗｅｂｉｆｉｅｒは、あるスコープから別のスコープへのシートデータの一過性バージョンのポータビリティを可能にし得る。例えば、ユーザごとの一過性のスコープを有するページの場合、ｗｅｂｉｆｉｅｒは、訪問者ジョンへのＵＲＬリンクを提供し得、これは、他の訪問者ジェーンと共有され得、その結果、ページへのジェーンの訪問は、自身のページではなくジョンに属する一過性ビューを示すことになる。ＵＲＬリンクは、読み取り専用またはジョンにスコープされた他の一過性データを示す他のページにナビゲートすることができないなど、一過性ビューへのアクセスが制限され得る。ｗｅｂｉｆｉｅｒはまた、ジェーンがジョンの一過性データを採用するためのオプションを提供し、ジェーン自身の一過性のスコープ内で修正を進めることができる。ｗｅｂｉｆｉｅｒはまた、訪問者がいくつかの一過性のスコープのうちの１つを維持し、選択的に再開することができるように、一過性のスコープをブックマークすること、またはＵＲＬリンクを再利用することを可能にし得る。
【０２５６】
設計者が任意の一過性を指定しなくても、ｗｅｂｉｆｉｅｒは、訪問者にサンドボックスモードへの出入りのオプションと、一過性スコープの選択のオプションを提供し得る。結果は一過性を指定する設計者と同様であろう。訪問者が単一の値、値のページ、またはアプリ全体をサンドボックス化することを望むことを示す場合、デスティネーションシステムは、関連付けられたデータの一過性バージョンを作成し、訪問者がデータの非一過性バージョンに影響を与えることなくデータを編集することを可能にし得る。次いで、訪問者がサンドボックスモードを終了することを希望することを示す場合、一過性データは破棄され得、訪問者のビューは、さらなる編集が非一過性データに影響を及ぼす通常の状態に戻るか、または訪問者は、彼らのサンドボックス変更を非一過性データに適用するオプションを与えられ得、訪問者に変更のためのステージング領域を効果的に提供する。同様のサンドボックスモードはまた、変更のためのステージング領域として機能するように、ｗｅｂｉｆｉｅｒによって設計者に提供され得る。
【０２５７】
セル、領域、および／またはそれ以外への参照が、一過性も非一過性も明示的に指定しないとき、デスティネーションシステムは、訪問者ブラウザセッションなどの現在の要求コンテキストのスコープと一致する狭いスコープを有する一過性バージョンを自動的に使用しようとし得、任意の狭いスコープが存在しないときに、任意の適用可能な一過性バージョンが非一過性バージョンに戻ることができるまで、訪問者などの広いスコープを有する一過性バージョンを使用しようとし得る。
【０２５８】
並行性および式エンジン
多くの訪問者が、デスティネーションシステムにログインし、読出し専用ページを同時に要求することもできる。編集に関係する要求に関して、サーバは、例示的な実施形態によれば、入ってくる要求またはレコードを修正する要求のコアコードのすべてをキューにシリアライズしてよく、これは、今日の処理能力を考えると事実上同時であるように見えるであろう。多くの異なるページタイプに適用可能な、デスティネーションシステムは、スプレッドシート定義から生じるセル参照および式を、ユーザに表示されるまたはスプレッドシート定義におけるまたはデスティネーションシステムの他の領域内のさらに他の式に再帰的に用いられることになる、シンプルテキストおよび数値へ分解し得る。式の分解は、多くの方法で完了され得る。スプレッドシートツールと同じコア処理エンジンまたはライブラリが再利用されてよく、またはカスタムのパーシングおよび式処理エンジンがデスティネーションシステムに埋め込まれるように構築されてよい。いずれにしても、エンジンは、行および列のインデックス値に基づいてセル参照を分解する１つまたは複数のコールバックを有してよく、または、セル定義を格納するデータベースにスプレッドシート定義を渡すまたはこれにアクセスすることもできる。パスインされるスプレッドシート定義は、パスインされたオリジナルのスプレッドシート定義と同じではない、簡易化されたまたは他の方法で修正された、再生成された定義であってよく、またはオリジナルのスプレッドシート定義がパスインされてよい。編集に何らかの衝突があるケースでは、システムは、時間（例えば、最後の人が勝つ（ｌａｓｔ  ｍａｎ  ｗｉｎｓ））または任意の他の所望のヒューリスティックスに基づいて受け入れられた編集を選択または指定し得る。
【０２５９】
ワークフローおよびフィルタリング結果
Ｗｅｂｉｆｉｅｒは、例示的な実施形態によれば、ワークフローのいくつかのフォームが、Ｒｅｐｏｒｔページタイプおよび他のページタイプのバリエーションで定義されることを可能にし得る。行レコードシート上で、行ごとの、したがって、レコードごとの訪問者パーミッションに影響を及ぼすことを意図した列を設計者が追加することもでき、その場合、特定の列のセルの式の結果により、デスティネーションサーバがその行を出力結果に含むまたは含まないことになる。例えば、列Ａが従業員の名前を含み、列Ｂがいくつかの時間を含む従業員タイムシート・スプレッドシートと、該シートのソース領域を有するＲｅｐｏｒｔページタイプを想像してみる。追加の列Ｃは、“＝ＩｓＬｏｇｇｅｄＩｎＵｓｅｒ（Ａ１）”に似たレコードを表す各行に関する式を有してよく、この場合、Ａ１は、第２の行に関してＡ２に、以下同様に変化することになる。これは設計者に値を示すべく設計時間中に分解することができないが、デスティネーションシステムは、Ｒｅｐｏｒｔページをリストするタイムシートを訪問者が訪問するときに式の列を評価することになる。反復中に、デスティネーションシステムは、その行の列Ａで指定される従業員が訪問者ではなかった場合に、訪問者に関する行のレンダリングをスキップすることになる。行は、列Ａにおける訪問者と一致した場合にレンダリングされ続けることになる。最終結果は、従業員が、該従業員に関係する時間レコードの行のみを示すことになるスプレッドシート定義に基づいて、タイムシートウェブページを訪問することができたことである（図２０）。同様に、シートがスーパーバイザを指定する列を有していた場合、スーパーバイザのタイムシート概要ページは、該スーパーバイザの権限下の時間レコードのみをリストし得る。
【０２６０】
ページタイプが編集ページの場合、式の同じ評価は行をスキップし、これにより、情報を非表示にするだけでなく、他の行の編集を可能にしながらユーザがいくつかの行を編集することを防ぐために入力制御が提供されることも防ぐ。これらのコンポーネントを一緒にすることの望外の効果は、タイムシートページ上で自分のタイムシートだけを見る従業員などのユーザがワークフローを定義できるようになり、“ｒｅａｄｙ  ｔｏ  ｓｕｂｍｉｔ”列を１つまたは複数のレコードに関してｔｒｕｅに変更することができ、スーパーバイザは“ｒｅａｄｙ  ｔｏ  ｓｕｂｍｉｔ”列に基づいて閲覧する行を限定する式を有するページ上に現れたこれらのレコードを見ることができ、スーパーバイザは自分が監督する従業員のみに関する“ａｐｐｒｏｖｅｄ”値を変更することができ、最終的にマネージャは承認されたレコードおよび承認された時間の総計のみを見ることができることである。手短に言えば、本明細書で説明される態様は、これまでは経験を積んだソフトウェア開発者の支援を必要としていた、カスタムの複雑なワークフローの作成を可能にする。
【０２６１】
ボタン
訪問者の便宜のために、例示的な実施形態によれば、値のテキスト編集をボタン制御へ変更するためのシグナルとしてデスティネーションシステムが見るタグを含むスプレッドシートツールのコメント特徴を用いて、メタデータが、セル、例えば、セルコメント上で指定され得る。例えば、設計者が各データレコード上の“ａｐｐｒｏｖｅｄ”値を望んだ場合、文字列“ｔｒｕｅ”をタイプするべくテキストボックスを訪問者に提示するのではなく、セルの値をｆａｌｓｅからｔｒｕｅに変更することによりレコードの承認を示すべく訪問者がボタンをクリックできることが設計者に好まれる場合があり、その場合、訪問者は“ｆａｌｓｅ”に“ｔｒｕｅ”を戻し入れるように変更し得る。これは、結果的により使いやすいシステムをもたらすとともに、値への変更が一方向であるケースの一助となる（例えば、ｆａｌｓｅからｔｒｕｅになっても、設計者は、レコードが決してｆａｌｓｅに戻ることが有効であるとは感じない）。
【０２６２】
Ｉｎｓｅｒｔページに関して、デスティネーションシステムのデフォルトのサブミットフォームボタンでさえも、スプレッドシートテンプレート内のどこかに配置される“＝ＳｕｂｍｉｔＢｕｔｔｏｎ（Ｄｏｎｅ，Ｇｒｅｅｎ）”などのｗｅｂｉｆｉｅｒにより定義されるまたはｗｅｂｉｆｉｅｒにより理解される式関数を有するセルにより定義される外観および場所を有してよい。スプレッドシートツールがそれをサポートするならば、デスティネーションシステムがデスティネーションページ上のサブミットボタンの位置の基礎として用いることになるフローティングボタンを配置するのにドラッグおよびドロップ式のフローティング制御を用いることもできる。このようにして、スプレッドシートにより定義されないインターフェースである、デスティネーションシステムの実際の“ｈａｒｄ−ｃｏｄｅｄ”インターフェースが、デスティネーションページ上で最小にされる。
【０２６３】
セキュリティ＋間接的な（カスケーディング）フィルタリング
入力を防ぐことは、設計者がソースはレコードシートであると指定したページに関する制御を無効にすることまたは非表示にすること、若しくはサーバが多少なりとも制御を訪問者に送信しないようにすることを含むことができる。セキュリティのために、サーバはまた、例示的な実施形態によれば、訪問者は通常のブラウザではなく悪意のあるエンドポイントである可能性があるため、ＨＴＴＰ  ＰＯＳＴ要求を用いて投稿されるサブミットされた入力が同じ論理に基づいて許されるかどうか、制御がユーザに提示されたかどうかを確認し得る。様々な行レコードをポピュレートされることを意図された他のテンプレートスプレッドシートを利用する他のデスティネーションページはまた、同じ論理を用いて許容を評価する。例えば、インボイス詳細テンプレートのＴｅｍｐｌａｔｅ  Ｓｏｕｒｃｅを有するインボイス詳細レポートページが、デスティネーションシステムの訪問者によりアクセスされており、且つ、インボイスレコードリスティングシート上の行２上にインボイス２０５をポピュレートされている場合、デスティネーションシステムは、行２が行２へのアクセスを制約する式を有するかどうかを指定する列に関するインボイスレコードシートをチェックすることができる。制約する式を有する場合、デスティネーションシステムはまた、インボイス２０５に関するインボイス詳細レポートページへのアクセスを制約することになる。ネストされるテンプレートの場合、または単一のテンプレートに複数のソースシートが用いられる場合、および他のこのような複雑なシナリオでは、デスティネーションページの一部はポピュレートおよびレンダリングされ、一部はされないが、カスケーディングの基礎をなす方法は残る。
【０２６４】
列全体ではなく単一式
レコードごとの式を有する列を追加することの代替は、例示的な実施形態によれば、シート上のまたはシートの外部の指定されるまたは参照される場所に入力され、デスティネーションシステム内に格納される、別個の単一式を有することである。この代替では、デスティネーションシステムは、各行を通して反復し、反復している現在の行またはレコードに式を適用することになる。ｗｅｂｉｆｉｅｒの他の領域は、代替的な式の同じ集中化を利用し得る。
【０２６５】
例えば、行ごとのパーミッションに関係する前の例では、本明細書は、Ｃ１内の“＝ＩｓＬｏｇｇｅｄＩｎＵｓｅｒ（Ａ１）”などの式を有する列Ｃ、行２に関する“＝ＩｓＬｏｇｇｅｄＩｎＵｓｅｒ（Ａ２）”などの式、などの例を与えた。設計者は、次いで、各それぞれの行に関する列Ａを指すログインユーザへのパラメータと共に、すべてのレコードに関して式をコピーしてよい。しかし、この関数は厄介であり得る。代替的な例は、ソースレコードを指すページの作成中にオプションとしてシートに別個に定義される、“＝ＩｓＬｏｇｇｅｄＩｎＵｓｅｒ（Ａ）”、または普通のスプレッドシートの式構文とは異なる構文を有することである。デスティネーションシステムは、次いで、一般に列を指す“Ａ”パラメータが、“ｖａｌｕｅ  ｉｎ  ｃｏｌｕｍｎ  Ａ  ｆｏｒ  ｔｈｅ  ｒｏｗ  ｒｅｐｒｅｓｅｎｔｉｎｇ  ｔｈｅ  ｒｅｃｏｒｄ  ｃｕｒｒｅｎｔｌｙ  ｉｎ  ｑｕｅｓｔｉｏｎ（当該レコードを表す行に関する列Ａの値）”に等しいと理解し得る。言い換えれば、これは、式を、上記の列Ｃを有することに等しいと理解し得る。別の代替的な例として、“＝ＩｓＬｏｇｇｅｄＩｎＵｓｅｒ（Ａ）”式は、行レコードと同じシート上のどこかの単一セル内に、おそらくセル“Ｚ１”における行レコード情報のはるかに右に配置され、フィールドは、どんな単一セルが行ごとのパーミッションに関する式を表すかを指定するページ定義ステップ中に存在し、このような例では“Ｚ１”に設定され得る。
【０２６６】
オーバーレイシート
往々にして、単一のレコードシートは、異なるパーミッションおよび異なる意図された訪問者を有する多くのデスティネーションシステムページの基礎である。このようなケースでは、例示的な実施形態によれば、それぞれのデスティネーションページのパーミッションに影響を及ぼすべく異なる式を含むためにいくつかの列を用いることもできる。代替として、デスティネーションシステムは、スプレッドシート定義にＯｖｅｒｌａｙ  Ｓｈｅｅｔを追加してよい。Ｏｖｅｒｌａｙ  Ｓｈｅｅｔは、最初にすべて同じ値を有する行レコードシートの複製であり得る。これは、行レコードシートに基づくことを意図されたおよびページに固有の修正を有することを意図されたシートとして、シートのスプレッドシート定義上のメタデータと共に、デスティネーションシステムによりＯｖｅｒｌａｙ  Ｓｈｅｅｔとしてフラグを立てられ得る。設計者は、次いで、Ｏｖｅｒｌａｙ  Ｓｈｅｅｔに列Ｃを追加してよく、デスティネーションシステムは、上記とほぼ同じように列Ｃを用いてよいが、代わりに行レコードシートに追加されたかのように式を評価し、これは、Ｏｖｅｒｌａｙ  Ｓｈｅｅｔが作成されてからリストが変更された場合に行レコードの最新のリストに対してそれが作用することを可能にする。異なるデスティネーションページに関する異なるＯｖｅｒｌａｙ  Ｓｈｅｅｔｓは、異なる列Ｃ式を有し得る。Ｏｖｅｒｌａｙ  Ｓｈｅｅｔｓは、ベースの内容を同期して保つために、行レコードシートが変更されたときにはいつでも更新され得るが、意図された新しい列Ｃだけは例示的な違いとして持続する。
【０２６７】
Ｏｖｅｒｌａｙ  Ｓｈｅｅｔｓが、セル位置またはどの挿入された新しいセルへの変更も有さないが、セルへの視覚的な書式設定の変更のみを含むようにすることが可能である。例えば、Ｏｖｅｒｌａｙ  Ｓｈｅｅｔｓは、フォントカラー、フォントサイズを変更し得る、または同じくデスティネーションページからそれぞれの内容を非表示にするためにスプレッドシートツールの伝統的な“ｈｉｄｅ  ｃｏｌｕｍｎｓ”特徴を用い得る。レギュラーシートとの混同を避けるために、Ｏｖｅｒｌａｙ  Ｓｈｅｅｔｓは、種々の方法でオーバーレイとしてユーザに示され得る。例えば、スプレッドシートの背景は、シートの全体を通して、指定される色、例えば、水色に設定することができる（図３９）。
【０２６８】
往々にして、テンプレートまたはＯｖｅｒｌａｙ  Ｓｈｅｅｔｓは、スプレッドシートツールがシートのリストからシートを非表示にすることをサポートする場合に”ｈｉｄｄｅｎ  ｓｈｅｅｔｓ”とすることができ、或いは、テンプレートシートは、他のタイプのシートとは別々にリストすることができる。設計者が特定のページを見ているときに、これらの付加的なシートは、閲覧が完了するまで自動的に再表示されることになる。
【０２６９】
伝統的なスプレッドシートテーブル
デスティネーションシステムが、ページ作成中に列Ｃが行ベースのパーミッションを指定することを示すフィールドを有するのではなく、代替は、例示的な実施形態によれば、これを暗示するスプレッドシート定義を有することである。スプレッドシートは、伝統的な“ｓｐｒｅａｄｓｈｅｅｔ  ｔａｂｌｅｓ”を有してよく、これは通常、セルの領域を備え、スプレッドシートツールを色付けすることができ、ヘッダロー上のフィルタオプションおよびソートオプション、および伝統的なスプレッドシートツール内で閲覧されるときのシート内の行の表示を管理するための他の特徴を有することができる（図７４）。ｗｅｂｉｆｉｅｒは、ページのために用いられるソース行レコードシートのスプレッドシート定義におけるまたはページのために用いられるＯｖｅｒｌａｙ  Ｓｈｅｅｔにおける伝統的なスプレッドシートテーブルの存在をチェックすることができ、テーブルが存在する場合、ｗｅｂｉｆｉｅｒは、フィルタリング、ソーティング、および他の方法のためにテーブルの持続状態を見てよい。設計者が列Ａによりテーブルのセルをソートした場合、デスティネーションシステムは、同様に列Ａにより出力をソートすることになる。列Ｃの式に基づいて行ベースのフィルタリングパーミッションを選ぶ、前の例に関して、設計者は、テーブルを列“Ｃ＝ｔｒｕｅ”上でフィルタするように設定することもでき、デスティネーションシステムは、同じ論理で結果出力をフィルタすることになる。このようにして、ページの作成者が、行を見るのにｔｒｕｅ評価を必要とする行ベースのパーミッションを列Ｃが有することを示すことは必要とされない。
【０２７０】
例として上記の伝統的なテーブル方法を含むレコードをパーミッションがフィルタしている本明細書で説明されるあらゆる状況または方法に適用可能な、デスティネーションサーバは、随意的に、Ｒｅｐｏｒｔページおよび不可にされたレコードを除いてスプレッドシート式内の集計関数を有する行レコードシートに依存する他のページタイプをレンダリングすることができる。この方法によれば、レコードごとのパーミッションはまた、例えば集計グラフを有するＲｅｐｏｒｔページに影響を及ぼすことになる。設計者はまた、基礎をなす行レコード・パーミッションによる影響を受けない集計グラフを有するべく、これをページごとに無効にすることもでき、これは、訪問者に集計情報を効果的に与えるが、粒度が細かいレコードごとの情報を保持し続ける。
【０２７１】
更新されたスプレッドシート定義の抽出
デスティネーションシステムが、デスティネーションシステムの訪問者に読出し専用および／または入力可能フォームおよび内容を提供するべく設計者のスプレッドシート定義を既に利用した後で、およびデスティネーションシステムの訪問者がレコードをもしかすると修正または入力した後で、デスティネーションシステムは、例示的な実施形態によれば、すべてのデータおよびテンプレートの更新された、統一された、またはマルチパートの表現を、スプレッドシートツールに十分に適合するスプレッドシートフォーマットで、設計者に提供することができる。便宜上、これは、ステップ２１５で行われ得る場合の、抽出と呼ぶことができる（図２）。抽出は、ダウンロードされるファイルとして、またはデスティネーションシステムから情報を受信し、スプレッドシートツール内のシートを更新するデスティネーションシステムのＡｄｄ−Ｏｎまたはプラグイン（図５４の“Ｄｏｗｎｌｏａｄ  ｄａｔａ”ボタン）を用いてスプレッドシートツールを更新することによって提供することができる。ほとんどのケースにおいて、設計者は、デスティネーションシステムからのさらなる関与が全くなしに、更新されたレコードを有するだけでなく、レコードシートに基づいて実際のデータを表示するレポートも有するスプレッドシートを受信するであろう。
【０２７２】
抽出は、スプレッドシート定義が最初にデスティネーションシステムに入れられたのと同様にして、しかし逆に行われ得る。１つの例において、デスティネーションシステムが、スプレッドシート定義を持続し、要求ごとにすべての修正を行った場合、デスティネーションシステムは、設計者のオリジナルのファイルのアップロードの逆を行うことのみを必要とする、すなわち、ブラウザによるダウンロードのためのファイルとしてｘｌｓｘデータを提供する。別の例において、デスティネーションシステムが、ｘｌｓｘデータを解凍し、中身の解凍されたファイルをデータベースに格納した後で、スプレッドシート定義を持続した場合、システムは、各レコードに関する解凍されたファイルを作成し、データのすべてをｘｌｓｘファイルへ圧縮し、次いで、ファイルを設計者へのダウンロードとして提供することにより、ステップを逆にし得る。第３の例として、データベーステーブルがセルごとに１つのレコードを格納していたが、データベースに格納されたセルの内容のスキーマの変更がなかった場合、その逆は、すべてのデータベース入力を反復し、セルの内容をＸＭＬへシリアライズし、解凍されたシートファイルを生成するべく他のデータベーステーブルに格納されたシートごとの定義を再導入し、次いで、他の例で示したステップを進めることを含み得る。第４の例として、ソーススプレッドシート定義が、定義をフェッチするｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しによって提供されていた場合、その逆は、他のものを置き換えるべく新しいスプレッドシート定義を配信するＡＰＩ呼び出しを含み得る。
【０２７３】
時として、設計者が、１つまたは複数のレコードをポピュレートされた１つまたは複数のシートテンプレートと共に１つまたは複数のスプレッドシートファイルまたは１つまたは複数のスプレッドシート・シートを取得する場合に、設計者または他のユーザは抽出を行うことができる。例えば、この種の抽出は、結果的に１００シートを有するスプレッドシートを生じる場合があり、その各シートは、シートテンプレートのうちの１つの形態で表示されるインボイスである。設計者のために抽出をパッケージするステップおよび例は、同様であり得るが、いくつかの違いは、デスティネーションシステムが、Ｒｅｐｏｒｔページを生成する早い段階でそれが行うようにテンプレートシートにポピュレートするステップに従う必要があるが、その後、セルを他のフォーマットへ変換するのではなく上記で提供された抽出ステップに結果をリダイレクトし、その後、テンプレートシートに他のレコードをポピュレートすることを反復することである。
【０２７４】
Ａｄｄ−Ｏｎ（プラグイン）は、典型的なプッシュ通知またはポーリング方法を介して、リアルタイムのリロードおよび更新を、デスティネーションシステムがそれらを利用可能にする場合に設計者に提供し得る。典型的に、これは、抽出ステップが、シートまたはセルのどちらが訪問者により変更されようともそれに行われることに限定されることを意味し、Ａｄｄ−Ｏｎは、残りには触れないまま、これらのシートまたはセルのみを更新する。Ａｄｄ−Ｏｎは、すべてユーザの最小の関与でまたは関与なしに、更新のリアルタイムチェックを有するが、任意の新しいスプレッドシート定義をローカルファイルとしてハードドライブ上にダウンロードおよび保存し、次いで、これを開くようにスプレッドシートツールをトリガする、ハイブリッド手法を取り得る。
【０２７５】
スプレッドシート定義の継続的編集
Ａｄｄ−Ｏｎを介してまたは他の方法でファイルとしてまたはスプレッドシートツールへ抽出されるのいずれであるかに関係なく、例示的な実施形態によれば、設計者は、このとき、デスティネーションシステムを用いる前に行ったのと同じようにテンプレートシートおよび／またはレコードシートにさらなる修正を行うことができる。実際には、設計者は、デスティネーションシステムに空またはほぼ空のスプレッドシート定義を入れ、次いで、設計時間に関連する任意のデスティネーションシステム特徴を活用するべく、抽出された後にのみスプレッドシートの構築を始めることを選択し得る。単純な例として、特定の新しいｗｅｂ−ａｐｐを示す特定の新しいスプレッドシートは、デスティネーションシステムがこの新しいｗｅｂ−ａｐｐをａｐｐのリストに表示することに起因して、そのユーザにより設計されていることを他の設計者に協調のために気付かせる。
【０２７６】
デスティネーションシステムは、設計者がスプレッドシートの編集中であると示した時間中にまたは設計者が編集していることをＡｄｄ−Ｏｎがデスティネーションシステムサーバに知らせる場合に、訪問者からのすべてのアクセスをロックまたはブロックする、読み出しアクセスのみを有する、または読み出しおよび挿入アクセスのみを有するためのオプションを有し得る。このようなブロッキングは、典型的に、設計者が編集しているシートと同じファイルから生じるシートを訪問者のページが必要とするかどうかを判定することにより、またはおそらく、それが同じファイルからのものであるかどうかまたは訪問者のシートから編集中の設計者のシートへの何らかの直接的な参照または間接的な参照を再帰的にシークする存在があるかどうかを判定することにより、設計者が現在編集しているものに関係したシートのみに制約される。これは、訪問者による変更と設計者による変更との予期しない衝突を防ぐ、または設計者による変更の進行中の不完全な組から導出されるページを訪問者が見ることを防ぐ。これらの状況を回避する一助となる別の技術は、設計者がスプレッドシート定義への変更を行うつもりであることを同じく手動で指定するかまたはこれを検出するＡｄｄ−Ｏｎを介して自動的に示すことにより、デスティネーションシステムにそれが格納する表現をステージング領域にコピーさせることであり、この場合、設計者による変更は、設計者が変更のグループを完了し、変更を稼働させる準備ができたことを示すまでステージング領域にのみ影響を及ぼし、準備ができたことを示した時点で、ステージング領域はライブｗｅｂ−ａｐｐ上にコピーバックされる。その時間中に、ライブｗｅｂ−ａｐｐは、完全にブロックされるか、読出し専用に設定されるか、または続行することを許されるが、ステージング領域上で動作している間に設計者が行った変更は、個々の設計者による編集をライブｗｅｂ−ａｐｐのレコードとマージすることができるまたは新しいスプレッドシート定義をライブｗｅｂ−ａｐｐのレコードにアップロードおよびマージすることができるのと同じ方法によりｌｉｖｅ  ａｐｐを保持しながらｌｉｖｅ  ａｐｐにグループとしてマージされる。
【０２７７】
訪問者からのｗｅｂ−ａｐｐの最新の変更のマージと設計者の変更のマージは、両方ともスプレッドシート定義フォームにあるときに行うことができるように、データをマージするためのいくつかの普及した一般的な方法を採用することができる。各変更を受け入れるか、または拒否するべく、スプレッドシートの差異を識別し、これらの差異を通して反復することを可能にするために、市販のライブラリおよびツール、ならびに、３つのスプレッドシート：オリジナル、変更されたバージョンＡ、および変更されたバージョンＢを比較するライブラリおよびツールが使用され得る。これらは、競合しない変更を反復し、処理し、競合を完全に拒否するかまたはどのバージョンが勝つかについての決定を下すべくユーザに競合情報を提示する。
【０２７８】
マージする１つの方法は、ｗｅｂｉｆｉｅｒソフトウェアの期待される使用に最も貢献する様態でいくつかの他の技術を組み合わせることである。例えば、設計者は、テンプレートシートへの変更の開始を許されてよく、デスティネーションシステムは、レコードシートへの訪問者による変更をブロックしないであろう。デスティネーションシステムがテンプレートシートを変更する訪問者を有することは稀であるが、特に、設計者がどんなシートについて報告するかを選択するときにデスティネーションシステムはすべてのシートを一般的に取り扱うことができるため、確かに可能性はある。それでもなお、デスティネーションシステムは、デフォルトでテンプレートシートへの変更のみをブロックしてよく、これにより、それがＴｅｍｐｌａｔｅ  Ｓｏｕｒｃｅｓシートとして参照されたか否かに関係なく、設計者がページの作成中に該シートをどのように参照したかを通じて反復することにより、それが知ることができるのは排他的にテンプレートシートである。設計者が、提案した変更の影響をプレビューすることを望んだ場合に、デスティネーションシステムは、ステージング領域を自動的にセットアップし得る。設計者が、レコードシートを修正する際に検出された場合に、ｗｅｂｉｆｉｅｒシステムは、ｗｅｂ−ａｐｐの付加的な関連部分を同時入力からブロックすることを設計者に促し得る。この手法では、設計者に競合の解決を促すことは回避することができ、設計者は、依然としてテンプレートシートの変更を介してデスティネーションシステムのユーザインターフェースを更新し、デスティネーションシステムがそれが格納しているどの以前のまたは新しいレコードも廃棄しないようにすることができる。
【０２７９】
Ｉｎｓｅｒｔタイプおよびいくつかの他のタイプの編集の場合には、レコードへのＩｎｓｅｒｔタイプの編集でさえも、競合の解決を促すことなくデスティネーションシステムおよび設計者のツール上で同時に可能である。シンプルな手法は、それらのセッションの開始時にまたは設計者が設計作業を行う意思を示した後で、および、設計者の変更をオリジナルと比較してどのレコードが新しいかを判定し、デスティネーションシステムにそれらのそれぞれを追加させるために次にアップロードするときに、設計者に送信されたオリジナルのスプレッドシート定義のコピーを保ち、設計者からのこれらの新たに挿入されたレコードがマージされている間は、デスティネーションページが動作および挿入を続けることを可能にするべく短くロックすることである。同様の様態で、設計前のオリジナルを保存し、どのレコードが欠落しているか、したがって、更新されることを意図して削除または修正されることを意図されているかを判断するべく、設計者の次のアップロードと比較することもできる。加えて、設計前のオリジナルと比較する同じ方法は、レコードシートからの列の追加または除去、および、ｗｅｂ−ａｐｐの構造への設計者による変更と一致するおよびそれを示す対応するテンプレートシートの変更を明らかにすることもできる。すべてのケースにおいて、デスティネーションシステム上の古いレコードと、新たに訪問者により追加されたまたは訪問者により修正されたレコードとの両方は、完全なままであり、最終結果は、デスティネーションシステムが訪問者に送信するインターフェース、並びに、レコードの構造を、例えば、１つのステップで、同時に更新することができる状態での、レコードへの設計者による変更と訪問者による変更との賢明な融合である。
【０２８０】
スプレッドシート定義の継続的編集を可能にする際の課題は、デスティネーションシステムが格納する範囲への任意の参照が期限切れとなり得るように設計者が列または行に変更を加え得ることである。これへの１つの解決策は、Ａｄｄ−Ｏｎが、参照されるスプレッドシートセルの場所、行および列のインデックスへの変更を待つようにし、デスティネーションシステムをイベントごとにまたはイベントグループごとにリアルタイムで適宜更新することである。例えば、デスティネーションシステムが“Ａ５：Ａ１０”の範囲参照を有し、且つ行が最上部に挿入される場合、適切なイベントリスナーへフックされるｗｅｂｉｆｉｅｒ  Ａｄｄ−Ｏｎは、行１よりも下の任意の範囲を、例えば、このケースでは“Ａ６：Ａ１１”に下方シフトすることをデスティネーションシステムに通知する。
【０２８１】
設計者がスプレッドシート定義をオフラインでおよびインストールされたＡｄｄ−Ｏｎを有さないコンピュータ、基本的に、修正されていない第三者スプレッドシートツールとスプレッドシート定義のコピーのみを有するコンピュータ上で修正できるようにするさらなる融通性（“Ｄｉｓｃｏｎｎｅｃｔｅｄ”設計と呼ばれる）を可能にするには、その課題は大きく、上記のソリューションでは十分でない場合がある。このケースでは、デスティネーションシステムは、スプレッドシートツールが設計者の変更に基づいて名前付き範囲を更新し、名前付き範囲へのこのような変更はｗｅｂｉｆｉｅｒシステムにより観察することができるため、スプレッドシートの伝統的な名前付き範囲特徴のピギーバックをオフし得る。この手法は、デスティネーションシステムに影響を及ぼすスプレッドシート定義を接続解除された状態で修正するこの望ましい融通性を可能にする。
【０２８２】
特に、レコードをアップロードするためのおよびインターフェーステンプレートをアップロードするための別個のステップは必要とされず、それらは１つのステップで、設計者により、または自動的に、デスティネーションシステムに提供される１つのスプレッドシート定義と共に行うことができる。もちろん、要望に応じて別個のステップも用いられ得る。
【０２８３】
設計者は、デスティネーションシステムが設計者または訪問者から付加的な変更を受信したことが“Ｓｅｒｖｅｒ  Ｃｈａｎｇｅｓ  ａｓ  ｏｆ＜ｄａｔｅ＞”ポップアップなどで通知され得る（図５３）。デスティネーションシステムの一般的なプッシュ通知またはポーリングが、これを達成するのに用いられ得る。これは、設計者が編集を行った後で設計者が同時編集の競合を低減することを可能にする。
【０２８４】
名前付き範囲
Ａｄｄ−Ｏｎを通じて行われたときに、ｗｅｂｉｆｉｅｒシステムは、例示的な実施形態によれば、スプレッドシートから（例えば、後述のＣＯＭ  Ｉｎｔｅｒｏｐライブラリを介して）またはデスティネーションシステムサーバから名前付き範囲を取得し、その名前を、ＪａｖａＳｃｒｉｐｔを用いてＡｄｄ−Ｏｎのウェブベースのユーザインターフェースに渡し得る。ｗｅｂｉｆｉｅｒは、デスティネーションページを作成または編集するときに、または、デスティネーションシステムがスプレッドシートセルへの参照を必要とするおよび処理されるべき訪問者要求のために参照がデスティネーションシステムにアクセス可能である必要があるあらゆる他のフィールドまたは状況で、データソースに関する現在選択されたセルを取り込むために新しい名前付き範囲を作成し得る。これらの範囲の名前は、“ＷｅｂｉｆｉｅｒＣｕｓｔｏｍＲａｎｇｅ”であり、例えば０〜２，１４７，４８３，６４７のランダムに生成される数が付属し得る。その名前をもつ範囲が既に存在する場合、新しい乱数は、作成された名前が既存の範囲に付いていないようになるまで生成され得る。代替的に、インクリメント数が用いられ得る。選択されたセルに関するカスタム範囲が既に存在する場合、システムは、別の名前を作成するのではなく既存の名前を用いることを選んでよい。行の挿入または列の挿入などのスプレッドシートツールにおいて実行される動作は、通常のスプレッドシートツールの使用のように名前付き範囲を拡大する。レコードが、そのソースとして名前付き範囲を有するＩｎｓｅｒｔまたはＣＳＶ  Ｉｍｐｏｒｔページを介して挿入される場合、これは、該範囲を、挿入されたレコードを含むように拡大することになる。任意のｗｅｂｉｆｉｅｒウェブページにより参照される名前付き範囲がスプレッドシート定義から削除される場合、シートがアップロードされるときに、システムは、無効なソースを有する影響されたページをマークすることになり、それらは、ソースが編集されるかまたは削除された名前付き範囲がリストアされるまで、アクセスできないであろう。名前付き範囲は、Ｉｎｓｅｒｔ、Ｅｄｉｔ−Ｃｅｌｌｓ、Ｅｄｉｔ−Ｒｅｃｏｒｄ、ＣＳＶ  Ｉｍｐｏｒｔ、Ｒｅｐｏｒｔ、Ｗｅｂｐａｇｅ、Ｃａｌｅｎｄａｒ、およびＤｅｔａｉｌｓ  Ｒｅｐｏｒｔページの境界を定義するのに用いられ得る。名前付き範囲はまた、Ｉｎｓｅｒｔページ、Ｅｄｉｔ−Ｃｅｌｌｓページ、およびＥｄｉｔ−Ｒｅｃｏｒｄページに関するヘッダ範囲を定義するため、およびＥｄｉｔ−ＣｅｌｌｓページおよびＥｄｉｔ−Ｒｅｃｏｒｄページに関する編集可能な範囲を設定するために用いられ得る（図８１）。Ｅｄｉｔ−Ｒｅｃｏｒｄページを用いると、名前付き範囲は、その範囲内のすべてのセルが削除される場合に自動的に削除され得る。
【０２８５】
例として、自動的に生成されるフォームインターフェースを有するＩｎｓｅｒｔページは、典型的に行レコードシートを指すソース範囲を必要とする。設計者が接続解除された状態で行レコードシートに列を追加するが、更新された定義を後でアップロードする場合に、デスティネーションシステムは、新たに挿入された列を含む更新された名前付き範囲を見ることができるであろう。この例では、Ｉｎｓｅｒｔページは、該ページが訪問者にフォームを送信するときに付加的なラベルおよびｈｔｍｌ入力制御を生成することになり、訪問者は、このケースでは設計者によるさらなるアクションが必要とされずに、情報の新しい列を含む新しいレコードを生成し始めることになる。
【０２８６】
セルごとのトラッキング
トラックするセルのボリュームが非常に高い場合、名前付き範囲は、例示的な実施形態によれば、デスティネーションシステムにより生成され、抽出されたスプレッドシート定義のすべてのセルに挿入されるユニークセルＩＤを含む付加的な属性を有することと組み合わせる、またはそれに完全に置き換えることができる。多くのスプレッドシートツールは、スプレッドシートツールが属性の目的の理解を有していないにもかかわらず、スプレッドシートツールにおいてセルが修正または移動またはコピーされていても、この属性をメタデータとして定位置に保つことになる。これは、名前付き範囲の同じ利点の多くを与えるが、スプレッドシートツールのユーザインターフェースにおいて設計者に可視とはなりそうにない。デスティネーションシステムは、次いで、接続解除されている状態でユーザがどんな変更を行うかの知識を取得するべく他のセル属性とほぼ同じようにユニークＩＤを抽出する。その知識は、次いで、これらのセルへのデスティネーションシステム上の参照を更新するのに用いることができる、または代替的に、これらのユニークセルＩＤは、あるケースでは、伝統的な行および列のインデックス付けを用いるのではなくセルを指すのにデスティネーションシステムが用いる方法として十分であり得る。範囲はさらに、範囲の左上隅および右下隅を表すＵＩＤ：ＵＩＤとして指定することもできる。
【０２８７】
同様の様態で、他のメタデータを、設計者に非表示にされるスプレッドシート定義の他の部分に格納することができる。例えば、シートを必要とするデスティネーションページへのリンクは、シートのＸＭＬ定義内の属性に格納することもできる。スプレッドシートツールが、名前付き範囲がするように自動的に更新される範囲が存在するが、その範囲がユーザに可視ではないスキーマをサポートする場合、該特徴はまた、名前付き範囲に取って代わり得る。
【０２８８】
デスティネーションシステムのための構成シート
“Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｈｅｅｔｓ”と呼ばれる名前付き範囲への代替の手法はまた、例示的な実施形態によれば、名前付き範囲の位置に代入することもできる。この手法は、スプレッドシートツールが非表示にされるシートをサポートする場合に潜在的に非表示にされる“ＤｅｓｔｉｎａｔｉｏｎＳｙｓｔｅｍＲａｎｇｅｓ”という名前の付加的なシートを含んでよく、該シートは、名前および範囲の２つの列を有する。デスティネーションシステムは、次いで、アップロード中にまたは各訪問者の要求時に該シートを通して反復し、第１の列の値により、デスティネーションシステムが分解しようとしている範囲を見つけ出すことになる。例えば、“Ｐａｇｅ１＿ＳｏｕｒｃｅＲａｎｇｅ”が、名前のうちの１つであり得る。デスティネーションシステムは、次いで、第２の列のセルの値または式を取得し、これを名前付き範囲の定義とほぼ同じように用い得る。この手法の利点は、値が実際に伝統的なスプレッドシート式であり得ることであり、したがって、範囲の定義でさえも、スプレッドシート定義の他の要素により影響を受けることがある。これは、望外な量のパワーおよび融通性を与える。例えば、インボイスの合計が＞＄５０００である場合に、詳細ページは、そのページソース構成において、訪問者に示すことが望ましい、しかし該インボイスのみに関する付加的な細字部分をおそらく有する追加の５つの行を含むべきであるという式を指定することもできる。同時に、スプレッドシートツールは、範囲を名前付き範囲とほぼ同じように自動的に同期して保つことになる。これは、特に、最小の付加的な努力またはトレーニングで若しくはそれらなしに、カスタムのレポートの構成を設計者が効果的に修正することを可能にする。
【０２８９】
ページタイトルなどの、デスティネーションページを提供するためにデスティネーションシステムに必要とされるデータおよびメタデータ情報は、スプレッドシート定義とは別個のデータベースに格納され得る。構成シートが名前付き範囲を置き換えることができるのとほぼ同じように、デスティネーションシステムに固有のすべてのデータは、スプレッドシート定義に含めることができ、重要なことには、よく知られたスプレッドシート・インターフェースおよび手法で設計者により編集可能である。別の例は、構成シートにおいて定義されるページタイトルであり、これは、ページタイトルが、設計者が選ぶ任意の式の結果となることを可能にする。“Ｐｒｏｆｉｔ／Ｌｏｓｓ  Ｒｅｐｏｒｔ”のようなページタイトルは、セルが＞＝＄０である場合に“Ｐｒｏｆｉｔ  Ｒｅｐｏｒｔ”とすることができ、セルが＜＝＄０である場合にタイトルは“Ｌｏｓｓ  Ｒｅｐｏｒｔ”となるであろう。別の例は、通知システムへの入力である。“＝ＩＦ（ＯｔｈｅｒＳｈｅｅｔ！Ａ１＞１０，“Ｔｈｏｍａｓ”，”Ｐａｔｒｉｃｋ”）”などの式は、レコードシート内の値に基づいて通知のデスティネーションを変更することもできる。これはまた、設計者が指定するおよびそれ自体が設計者により構成されるようにするためにこの発明の基礎をなす概念を若干周期的な様態で利用する式に基づいて、配信の時間またはあらゆる他の通知属性を変更することもできる。いくつかのスプレッドシートツールは、ツール内でアクセスされたときにセルが読出し専用である場合に、セルのメタデータを受け入れることができる。このようなケースでは、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｈｅｅｔｓは、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｈｅｅｔへの偶発的なまたは不適合な設計者による修正の可能性を低減するべく読出し専用にマークされるいくつかのセルを有し得る。例えば、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｈｅｅｔは、前述のＤｅｓｔｉｎａｔｉｏｎＳｙｓｔｅｍＲａｎｇｅｓシート上の第２の列以外のすべてのセルを読出し専用にし得る。
【０２９０】
最終的に、この手法を全体を通して一貫して実装する、デスティネーションシステムのｗｅｂ−ａｐｐの定義全体は、接続解除された状態で移動可能および構成可能であり得る。同時に、ｗｅｂ−ａｐｐの定義全体は、式により駆動され、任意に定義可能であり、定義の他の部分に依存し、その他の点では、レコードシート、テンプレートシート、それ自体、現在の日付のような関数の結果などへの無制限の予測不可能な接続を有し得る。
【０２９１】
外部補足データ：ファイル
ファイルは、例示的な実施形態によれば、ＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥ関数を用いてデスティネーションシステムにアップロードされ得る（図７）。ＩｎｓｅｒｔページまたはＥｄｉｔ−Ｒｅｃｏｒｄページに関するフォームを構築している間にＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥ列を含むフィールドに出会うときに、該フィールドに関するＦｉｌｅ  Ｕｐｌｏａｄ制御が提示され得る（図６２）。同様に、Ｅｄｉｔ−Ｃｅｌｌｓページ上のＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥ関数を含むセルを編集するときに、設計者は、式を編集するまたは新しいファイルをアップロードする選択肢を有し得る。Ａｄｄ−Ｏｎを有するスプレッドシートツールにおいてＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥに出会うときに、これは、ＷＥＢＩＦＩＥＲＦＩＬＥＡＴＴＲＩＢＵＴＥＳ関数を用いてファイルについての情報を取得するのに用いることができるキーを表示し得る（図６４）。
【０２９２】
ＲｅｐｏｒｔページまたはＥｄｉｔ−ＣｅｌｌｓページにおいてＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥに出会う場合に、ファイルがデスティネーションページ上に表示され得る。訪問者は、これらのアップロードされたファイルをファイルタイプに応じて異なる様態で閲覧することができる。それがイメージである場合、これはセル内に表示され得る（図６３）。それがオーディオファイルである場合、訪問者は、ＨＴＭＬ５オーディオプレーヤを用いてそれを聴くことができる。それがビデオである場合、訪問者は、ＨＴＭＬ５ビデオプレーヤを用いてそれを見ることができる。それが任意の他のタイプのファイルである場合、訪問者がそれをダウンロードするべく従うことができるリンクが表示される（図６１）。
【０２９３】
設計者は、デスティネーションシステムの管理ページから、システム上のファイルを閲覧し、ソートし、ファイルキー、サイズ、およびどのｗｅｂ−ａｐｐに各ファイルが属するかなどの詳細を得ることが可能であり得る。ファイルはまた、どんなファイルがｗｅｂ−ａｐｐと関連付けられるかのｅａｓｙビューを得るべくｗｅｂ−ａｐｐにより閲覧され得る。特定のユーザまたはユーザのグループだけがファイルにアクセスすることができるようにファイルにパーミッションも適用され得る。デスティネーションシステムは、式における該ファイルの組を参照する任意のセルへのアクセスを有する訪問者に基づいてこれらのパーミッションを取得し得る、または代替的に、デスティネーションシステムは、ファイルグループをリストする別個の構成インターフェースを有し、それらの共有設定の修正を可能にし、ファイルの新しい組に関するパーミッションのデフォルトの組を指定し得る。
【０２９４】
アップロードされたファイルは、実際のファイルディレクトリに、またはキーがｗｅｂｉｆｉｅｒに供給されたまたはｗｅｂｉｆｉｅｒにより生成された後で名前付けされるディレクトリにおける、ファイルがアップロードされたｗｅｂ−ａｐｐと関連付けられる、データベース仮想ファイルリスティング、ファッションに格納され得る。格納されるファイルのタイプは、ファイルのＭＩＭＥコンテンツタイプにより決定され、ファイルを表示するために記録され得る。複数のファイルが、同じキーの下で格納されてよく、ｗｅｂｉｆｉｅｒファイル機能のインデックスパラメータによりアクセスすることができる。
【０２９５】
ＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥ関数は、値または式からなるゼロ、１、または２つのパラメータを可能にし得る（図７）。第１のパラメータは、後でアップロードファイルを取得するのに用いることができるキーである、随意的な文字列パラメータである。キーが指定されない場合、グローバル一意識別子（ＧＵＩＤまたはｇｕｉｄ）が生成され、キーとして用いられ得る。キーが指定される場合、ユーザはまた、そのキーの下に示されることになるファイルのインデックスであり得る随意的な整数パラメータを含むことができる。インデックスが指定されないまたはインデックスがファイルの量よりも大きい場合、関数は、表示されるときに最新のアップロードされたファイルを示し得る。ファイルがＩｎｓｅｒｔページにアップロードされるときに、新たに挿入されるセルに関数ＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥがオートフィルされ得る。式における第１のパラメータは、以前のセルと同じキーであり得る。以前のセルキーパラメータがセル参照であった場合、これは下のセルを指すべく自動的に増分され得る。第２のパラメータは、セルがウェブサイト上で閲覧されるときに新たにアップロードされたファイルを表示し得るようにファイルの新しいナンバーであり得る。
【０２９６】
ＷＥＢＩＦＩＥＲＦＩＬＥＡＴＴＲＩＢＩＵＴＥＳ関数は、値または式からなる１、２、または３つのパラメータを可能にし得る（図５）。第１のパラメータは、ファイルに関する文字列キーであり、随意的であり得る（図示していない）第２のパラメータは、その属性を得るべくキーの下に格納されるインデックスであり、同じく随意的である最後のパラメータは、取得されるべき属性の名前または数である。ファイルの名前に関する“Ｎａｍｅ”または０、ＫＢにおけるファイルのサイズに関する“Ｓｉｚｅ”または１、ファイルがアップロードされた日付に関する“ＤａｔｅＵｐｌｏａｄｅｄ”または２、およびウェブサイト上のファイルを閲覧するためのＵＲＬに関する“Ｌｉｎｋ”または３。インデックスが指定されないまたはインデックスがファイルの量よりも大きい場合、関数は、最新のアップロードされたファイルの属性を得てよい。属性が指定されない場合、関数は、デフォルトで、ファイルの名前を示すことに設定され得る。
【０２９７】
外部補足ファイルシステムの上記の変形および特徴のすべては、セルごとに単一ファイルのバリエーションまたはセルごとに複数のファイルおよびファイルフォルダのバリエーションに当てはめることができる。
【０２９８】
外部補足データ：署名
署名は、イメージをアップロードする訪問者のために前述のファイルに基づく外部補足データを用いるのと概ね同じ方法論を用いてデスティネーションシステムにアップロードされ得る。しかしながら、この署名が外部データの形態であるケースでは、ファイルアップロードダイアログおよび制御は、ユーザが署名を入力することを可能にする制御と置き換えられ得る。例えば、レコードシートは、“＝ＷＥＢＩＦＩＥＲＩＮＳＥＲＴＳＩＧＮＡＴＵＲＥ（Ａ２，‘ｔｈｕｍｂｎａｉｌ’）”に似ているすべての行レコード上の式をもつ列を有してよく、この場合、列“Ａ”は、従業員の名前などの一意識別子として役立つことができるデータを有し、Ａ２における“２”は、適切な行に変化し、“ｐｒｅｓｅｎｃｅ”は、セルが、署名が利用可能な場合に署名のサムネイル、または署名がまだ利用可能でない場合にテキスト“ｎ／ａ”を示すことを示す。設計時間中に、Ａｄｄ−Ｏｎは、それらをセル内に表示するために各レコードに関するこのようなサムネイルをフェッチし得る。ソースがレコードシート全体に設定されるＲｅｐｏｒｔページの訪問者に関して、署名サムネイルは、デスティネーションページ上に表示されるすべてのレコード行の傍に現れ得る。サムネイルは、署名が取り込まれた日付および時間などのメタデータと一緒に取り込んだ署名の大きくポップアップするビューを開くべくクリック可能であり得る。ＩｎｓｅｒｔまたはＥｄｉｔデスティネーションページ上で、大きいポップアップビューはまた、大きいキャンバス領域を有してよく、その場合、ユーザによるマウス、デジタルタブレット上のインクレスペン、またはタッチスクリーン上の指の動きが、キャンバス領域にその動きをペンとして取り扱わせ、対応するラインをキャンバス上に引かせることになる。それを行うおよびフォームのサブミッション時にサーバにアップロードされることになるイメージデータと共にｈｔｍｌ入力フォームを提供するのに通例ＪａｖａＳｃｒｉｐｔコードを用いる、このようなキャンバスによるイメージファイルへの署名などの動きを取り込むための市販のモジュールが存在する。この例を続けると、デスティネーションシステムは、レポートページ上のレコードに関するその後の署名データの閲覧要求時に取得されるように、署名を表すイメージファイルをデータベースに格納し得る。視覚署名の代替として、デジタル署名を表すデータが、ＰＧＰ  ｓｉｇｎｅｄ署名の多数の第三者型発行者のうちの１つからクライアント側のＪａｖａＳｃｒｉｐｔにより取得されてよく、このようなデジタル署名の手書きのようなフォントを用いるテキスト要約またはトークン人工署名が、署名イメージの位置に表示されてよい。訪問者は、第三者型発行者がデジタル署名を発行するために、このようなハードウェアのための市販のインテグレーションポイントを用いて、ユーザ名とパスワードのペアまたはモバイルデバイスの親指スキャナ上の親指の指紋などの、認証情報の入力を必要とされ得る。
【０２９９】
外部補足データ：チャット
チャットオブジェクト特徴は、例示的な実施形態によれば、チャットディスカッションのストリームがスプレッドシートの１つまたは複数のセルに埋め込まれるまたは関連付けられることを可能にする。チャットオブジェクトは、他の訪問者が閲覧することができるセルに訪問者がメッセージを追加することおよび該セル上に他者または自分により残されたメッセージを閲覧することを可能にする（図５８）。チャットオブジェクトは、メッセージオブジェクトのリストを表し、各メッセージオブジェクトは、典型的に、少なくとも３つの部分：メッセージテキスト、メッセージをサブミットした時を示すタイムスタンプ、およびメッセージをサブミットしたユーザのユーザ名からなる。各チャットオブジェクトはまた、一意識別子、すなわち、他のチャットオブジェクトとは別個の識別子を有し得る（例えば、図５９の“６ｅａ６ｃｃ…”。識別子は、ユーザに割り当てられたものまたはシステムに割り当てられたものであり得る。チャットオブジェクトの識別子は、チャットオブジェクトを指すためおよびこれを他のチャットオブジェクトから区別するためにｗｅｂｉｆｉｅｒにより用いられ得る。
【０３００】
チャットオブジェクトは、ｗｅｂｉｆｉｅｒシステムにより定義されるカスタムの式関数であるＷＥＢＩＦＩＥＲＩＮＳＥＲＴＣＨＡＴと呼ばれるｉｎｓｅｒｔ−ｃｈａｔ式関数を入力することにより作成することができる（図６）。この機能をセルに入力するために、ユーザは、該セルに関する式を設定するのにパーミッションを有する必要がある。これは、可能なｗｅｂｉｆｉｅｒ  ＡＰＩ呼び出しを通じて、またはｗｅｂｉｆｉｅｒ  Ａｄｄ−Ｏｎがインストールされたスプレッドシートツールを通じて、を含む種々の方法で行うことができる。
【０３０１】
セルにチャットオブジェクトを作成するために、設計者は、セルの式を、パラメータなしのｉｎｓｅｒｔ−ｃｈａｔ関数（すなわち、‘＝ｗｅｂｉｆｉｅｒＩＮＳＥＲＴＣＨＡＴ（）’）に、唯一のパラメータとしてグローバル一意識別子（ＧＵＩＤ）の標準ハイフン区切り文字列表現を有するｉｎｓｅｒｔ−ｃｈａｔ関数（例えば、‘＝ｗｅｂｉｆｉｅｒＩＮＳＥＲＴＣＨＡＴ（”ＤＣ４０ＦＣＡ２−Ｄ７２Ａ−４ＡＦＤ−８０Ｅ４−７６７８２Ｂ４７Ｄ９６０”）’）に、または識別されるのが該会社に関するレコードに関係したチャットストリームを表すことになる“Ｐｌｅａｓａｎｔ  Ｓｏｌｕｔｉｏｎｓ”などのＧＵＩＤまたは文字列であるか否かに関係なく一意識別子に評価される式に設定し得る。異なるシートまたは同じシート上のいくつかのセルは、同じパラメータをＷＥＢＩＦＩＥＲＩＮＳＥＲＴＣＨＡＴに渡してよく、いくつかのデスティネーションページまたはページ内の場所が同じ共有されるチャットストリームを指すことを可能にする。
【０３０２】
ユーザがセルに関するｉｎｓｅｒｔ−ｃｈａｔ式を設定し、これをデスティネーションシステムに保存するときに（例えば、それらがスプレッドシートツールおよびＡｄｄ−Ｏｎを使用している場合に、スプレッドシート定義の変更をデスティネーションシステムにアップロードすることにより）、ｗｅｂｉｆｉｅｒは、いくつかのステップを行う。第１に、これは、ｉｎｓｅｒｔ−ｃｈａｔ式のパラメータなしのバージョンのすべてのインスタンスを、単一のＧＵＩＤパラメータを含むバージョンに置き換え得る。これは、バージョン４（ＩＥＴＦ  ＲＦＣ４１２２）アルゴリズムを用いてＧＵＩＤパラメータの各インスタンスを生成し得てよく、これは、生成されるパラメータが、実際にはどの他のセルにおけるｉｎｓｅｒｔ−ｃｈａｔ関数のＧＵＩＤパラメータとも別個であることを意味する。次いで、更新されたスプレッドシート定義を、デスティネーションシステムにアップロードする。
【０３０３】
チャットオブジェクトは、チャットオブジェクトが埋め込まれたセルを訪問者が閲覧することを可能にするページ上で訪問者が用いることができる（図５７）。例えば、チャットオブジェクトが、スプレッドシートの特定のシート上のセルに埋め込まれ、且つ、訪問者が、そのソースが該シートであるＲｅｐｏｒｔページへのアクセスを有する場合、訪問者は、デスティネーションページを通じて該チャットストリームと対話することができる。
【０３０４】
デスティネーションシステムは、その式がｉｎｓｅｒｔ−ｃｈａｔ関数であるセルを含むページをレンダリングするときに、該関数のＧＵＩＤパラメータを解析し、その一意識別子が解析したＧＵＩＤと一致するチャットオブジェクトが存在するかどうかを確かめるべく、そのデータベースをチェックする。一致が存在しない場合、その識別子が解析したＧＵＩＤであり、且つそのメッセージオブジェクトのリストが空である新しいチャットオブジェクトを作成し、これをそのデータベースに保存し、この新しいチャットオブジェクトをセルに関するチャットオブジェクトとして用いる。一致が存在する場合、一致するチャットオブジェクトを、セルに関するチャットストリームとして用いる。いずれのケースにおいても、デスティネーションシステムは、セルの内部に吹き出しアイコンおよび’Ｃｈａｔ’という言葉を表示する。訪問者がアイコンをクリックする場合、該ページ上に、該チャットオブジェクト（もしあれば）に関する過去のメッセージオブジェクトを年代順に示すモーダルウィンドウが表示される。各過去のメッセージオブジェクトは、それが投稿された全日付および時間、その後にそれを投稿したユーザのユーザ名、その後にメッセージテキストが示される。過去のメッセージのリストの下に、訪問者が新しいメッセージを書き込むことができるテキストボックスと、新しいメッセージをサブミットするためのボタンが示される。
【０３０５】
訪問者が、チャットオブジェクトの過去のメッセージのリストの下のテキストボックスに新しいメッセージを書き込み（図５８）、このメッセージをサブミットする場合、デスティネーションシステムは、新しいメッセージオブジェクトを作成し、そのタイムスタンプをシステム時間に設定し、そのユーザ名を訪問者のユーザ名に設定し、そのメッセージテキストをテキストボックスにおいてサブミットされたテキストに設定する。次いで、チャットオブジェクトをメッセージオブジェクトと関連づけ、メッセージオブジェクトおよび関連情報をデータベースに保存する。最後に、新しいメッセージオブジェクトをクライアントに返してよく、これは、過去のメッセージオブジェクトのリストの下に、しかしモーダルウィンドウにおけるテキストボックスの上に新しいメッセージオブジェクトを表示するおよびページをまったくリフレッシュせずにテキストボックスをクリアするのにＪａｖａＳｃｒｉｐｔを用いてよい。訪問者は、テキストボックスにさらなるメッセージを書き込むことができ、これらのさらなるメッセージをサブミットすることは、同じステップを再びトリガし得る。訪問者は、もうそれ以上メッセージを入力することを望まない場合、モーダルウィンドウ外のどこかをクリックしてよく、これにより、それを通じて訪問者がチャットオブジェクトにアクセスしたモーダルウィンドウが閉じ、その後ろにあるページが明らかになる。
【０３０６】
Ｉｎｓｅｒｔ−ｃｈａｔ式のＧＵＩＤパラメータはチャットオブジェクトの一意識別子として用いられるので、いくつかの異なるセルのｉｎｓｅｒｔ−ｃｈａｔ式が同じＧＵＩＤパラメータを有する場合、これらのセルの埋め込まれたチャットオブジェクトはすべて同じチャットオブジェクトであるので、１つのセルに埋め込まれたチャットオブジェクトに追加されたメッセージオブジェクトは、他のセルに埋め込まれたチャットオブジェクトのメッセージオブジェクトのリストを示し得る。
【０３０７】
可能ないくつかの外部補足データシステムが存在する。前述の２つは、手法の単なる例であり、上記の例のうちの１つに関して説明した特徴の多くは他の例に適用可能である。
【０３０８】
別の態様によれば、ビデオチャットモジュールもまたまたは代替的に用いられ得る。ビデオチャットオブジェクトは、ｗｅｂｉｆｉｅｒシステムにより定義されるカスタムの式関数であるＷＥＢＩＦＩＥＲＶＩＤＥＯＣＨＡＴと呼ばれるビデオｉｎｓｅｒｔ−ｃｈａｔ式関数を入力することにより作成され得る。この機能をセルに入力するために、ユーザは、該セルに関する式を設定するのにパーミッションを有する必要がある。これは、可能なｗｅｂｉｆｉｅｒ  ＡＰＩ呼び出しを通じて、またはｗｅｂｉｆｉｅｒ  Ａｄｄ−Ｏｎがインストールされたスプレッドシートツールを通じて、を含む種々の方法で行うことができる。
【０３０９】
セルにビデオチャットオブジェクトを作成するために、設計者は、セルの式を、パラメータなしのビデオｉｎｓｅｒｔ−ｃｈａｔ関数（例えば、‘＝ｗｅｂｉｆｉｅｒＶＩＤＥＯＣＨＡＴ（）’）に、唯一のパラメータとしてグローバル一意識別子（ＧＵＩＤ）の標準ハイフン区切り文字列表現を有するビデオｉｎｓｅｒｔ−ｃｈａｔ関数（例えば、‘＝ｗｅｂｉｆｉｅｒＶＩＤＥＯＣＨＡＴ（”ＧＣ４０ＦＣＡ２−Ｄ７３Ａ−４ＡＦＤ−８０Ｅ４−７６７８２Ｂ４７Ｄ９６０”）’）に、または識別されるのが該会社に関するレコードに関係したビデオチャットを表すことになる“Ｐｌｅａｓａｎｔ  Ｓｏｌｕｔｉｏｎｓ”などのＧＵＩＤまたは文字列であるか否かに関係なく一意識別子に評価される式に設定し得る。異なるシートまたは同じシート上のいくつかのセルは、同じパラメータをＷＥＢＩＦＩＥＲＶＩＤＥＯＣＨＡＴに渡してよく、いくつかのデスティネーションページまたはページ内の場所が同じビデオチャットを指すことを可能にする。いくつかの態様において、ＷＥＢＩＦＩＥＲＶＩＤＥＯＣＨＡＴ関数はまた、設計時に入力としてエンドユーザによるビデオチャットの開始時の接続先を必要とし得る。
【０３１０】
デスティネーションページを生成するときに、Ｗｅｂｉｆｉｅｒ論理は、ユーザによりアクティブ化されたときにエンドユーザと定義済みエンドポイント、例えば、設計時に設計者により識別されるデスティネーションとの間のビデオチャットを確立するビデオチャットモジュールをウェブページ上に含める、組み込む、または参照し得る。例えば、Ｄｒｕｐａｌ  Ｖｉｄｅｏ  Ｃｈａｔ、ＡＶＣｈａｔ、Ｂｉｇ  Ｂｌｕｅ  Ｂｕｔｔｏｎなどのビデオチャットモジュールが容易に入手可能である。
【０３１１】
訪問者入力の影響
以下に、１つの例示的なユースケースのシナリオでの、デスティネーションシステムに対する訪問者入力のプロセスおよび影響を説明する。ｗｅｂｉｆｉｅｒシステムにより生成されたＩｎｓｅｒｔページフォームが訪問者によりサブミットされるときに、デスティネーションシステムは、最初に、ページがパブリックであることまたはそれを使用するのに適切なパーミッションがユーザに与えられていることを確認し得る。ユーザが許可される場合、デスティネーションシステムは、ページを含むＡｐｐに関連するスプレッドシート定義を取得し、挿入プロセスを開始することになる。ユーザがＩｎｓｅｒｔページの使用を許可されない場合、それらのサブミッションが却下され、システムがユーザに通知し得る。
【０３１２】
レコードをスプレッドシート定義に挿入する前に、日付、時間、およびＧＰＳ座標データは、スプレッドシートツールに適切な文字列表現に変換されてよく、アップロードされた外部補足ファイルは、ＷＥＢＩＦＩＥＲＩＮＳＥＲＴＦＩＬＥ関数を参照する式により表され得る。スプレッドシートツールにおいて閲覧されるときに、関数は、ＷＥＢＩＦＩＥＲＦＩＬＥＡＴＴＲＩＢＵＴＥＳ関数で後の時点でデスティネーションシステムからファイルを取得するのに用いることができるキーを返し得る。
【０３１３】
すべてのデータが保存されるのに適切なフォーマットであれば、デスティネーションシステムは、ソース範囲の直後の行または列、若しくはワークシート全体がソースとして用いられている場合に次の空行または空列を見つけ出し、新しいデータをスプレッドシートへ挿入することになる。この時点で、スプレッドシート定義検証が評価され、その後、デスティネーションシステムにおいて別個に作成されている検証が続き得る。検証のいずれかが失敗する場合、ユーザは、通知され、それらのサブミッションを訂正する機会が与えられ得る。Ｗｅｂｉｆｉｅｒ式を含む任意の行または列が範囲内に存在する場合、それらは、それらがＯｖｅｒｌａｙ  Ｓｈｅｅｔにより非表示にされている場合であっても、適切な式をオートフィルされ得る。
【０３１４】
データが上手く挿入された後で、新しいデータが挿入されたデータセットを構成するセルの範囲へのすべての参照が更新される必要があるであろう。これは、名前付き範囲である場合にＰａｇｅのソース、Ｏｖｅｒｌａｙ  Ｓｈｅｅｔに保存されたソートおよびフィルタ範囲、および拡大されたデータの範囲を表示する任意のＣｈａｒｔ  Ｓｅｒｉｅｓを含み得る。すべての更新が完了すると、修正されたスプレッドシートが、任意の新たにアップロードされたファイルと共に、またデータベースに保存され得る。範囲は、どの行および列が現在含まれるかの数値表現を得るべくそれらを解析することができるようにＲ１Ｃ１文字列フォーマットに変換される。範囲値は、次いで、行の挿入のために１行または列の挿入のために１列だけ増分され、またＲ１Ｃ１文字列に変換され、またスプレッドシートに保存される。
【０３１５】
デスティネーションシステムは、電子メール警告を送信するのに通知システムにより用いられるＩｎｓｅｒｔ  ＰａｇｅイベントおよびＲａｉｓｅｓ  ｔｈｅ  Ｉｎｓｅｒｔ  ａｎｄ  Ｐａｇｅ  Ｃｈａｎｇｅｄイベントからのデータに応じて、デスティネーションシステム管理ページにまたはＡｄｄ−Ｏｎ内に示されるべき任意のページサムネイルを更新する。Ｉｎｓｅｒｔ  Ｐａｇｅのために構成される‘Ｎｅｘｔ  Ｐａｇｅ’が存在する場合、ユーザは、それへリダイレクトされることになる。
【０３１６】
動的ページ選択
本明細書で説明されるように、同じレコードのために、および同様のまたは同じ目的のために、同時に、複数のテンプレートおよび複数のページが存在することができる。目的は、読出し専用と訪問者入力ページの両方を含む任意の目的またはページタイプとすることができる。デスティネーションシステムは、例示的な実施形態によれば、どのテンプレートを表示するかの決定を助けるために、ブラウザまたはモバイルクライアントからの情報を使用し得る。例えば、情報は、画面サイズ、画面解像度、ＯＳバージョン、ブラウザのブランドおよびバージョン、テンプレートのどの組が好ましいかについての訪問者からの手動で指定される好み、および主としてマウス、キーボード、またはタッチスクリーンデバイスのいずれであるかなどのあらゆる数のデバイスの属性または能力を含み得る。ｗｅｂ  ａｐｐの場合には、この情報の多くは、ｈｔｔｐ“Ｕｓｅｒ  Ａｇｅｎｔ”ヘッダから、または、ウェブサーバによりセッション情報として一時的に格納されるこの情報をデスティネーションサーバにインバンドまたはアウトオブバンドで伝送するブラウザ上で実行するＪａｖａＳｃｒｉｐｔを有することにより得ることができる。モバイルａｐｐの場合には、ａｐｐは、デスティネーションシステムへの最初のログイン認証時にこの情報を収集および送信するように設計することができる。
【０３１７】
設計者は、訪問者にアクセス可能となるのにどんな基準を各ページが必要とするかを指定するべくページ上のルールのセット、並びに、フォールバックデフォルトを指定し得る。デスティネーションシステムは、単一のＵＲＬまたはページ識別子を達成するおよびどのテンプレートを選ぶかの該単一場所トリガデスティネーションシステム選択への要求を有するべく、設計者がこのようなページをそれらが共通の目的を有することを示す方法としてグループ化することを可能にし得る。このようなグループ化の場合に、デスティネーションシステムは、システムが各ページの優先順位を知るように設計者がルールと共にリストを並べ替える能力を有することになり、最後の１つはデフォルトである。
【０３１８】
シート作成のゲーミフィケーション−ソフトウェア
本明細書で説明される場合のシートを用いる複雑なソフトウェアの構築は、他の手段よりも非技術系の人々にとってはるかに簡単である。それでもなお、ｗｅｂｉｆｉｅｒシステムおよび／またはＡｄｄ−Ｏｎ（プラグイン）は、例示的な実施形態によれば、アチーブメントと考えることができる設計者側の種々のアクションまたはアクションのグループを待ち得る。これらのアクションが種々の基準を満たす場合、それらがアチーブメントに至ったことを示すべく設計者に視覚ポップアップが手短に表示され得る（図１５）。ポップアップは、“Ｙｏｕｒ  ｗｅｂ−ａｐｐ  ｉｓ  ｎｏｗ  ｒｅａｄｙ  ｔｏ  ｒｅｃｅｉｖｅ  ｎｅｗ  ｒｅｃｏｒｄｓ”または“Ｙｏｕ  ａｒｅ  ｄｏｎｅ  ｍａｋｉｎｇ  ｙｏｕｒ  ｆｉｒｓｔ  ｗｅｂ−ａｐｐ  ｒｅｐｏｒｔ”などの設計者が今作成したものの値をリレーし得る。基準は、設計者がこれらのアクションをとった最初の２回のうちの１回だけ、過去数か月の間に設計者がそのようなアクションを完了していない、訪問者が設計者のアクションに関係したデスティネーションページも訪問した、そのようなステップが時間を測られた前回よりも短い時間でユーザがいくつかのアクションを完了した、またはユーザが何かを達成するための異なるワークフローまたは異なる方法を試したなどの複数の基準を含むことができる。アクションは、デスティネーションシステムのまたはＡｄｄ−Ｏｎのユーザインターフェースとの対話、または設計者が作成するデスティネーションページに関連する訪問者の対話を含み得るだけでなく、設計者のスプレッドシートの分析にも基づき得る。例えば、ゲーミフィケーションシステムは、設計者が伝統的なスプレッドシートテーブルを作成したかどうか、設計者がテンプレートシート上の伝統的な条件付き書式設定を用いたかどうか、またはさらには、設計者が“＝ＳＵＭ（Ａ１：Ａ１０）”のような式における基本集計関数を用いたかどうかを見てよい。
【０３１９】
設計者は、それらのユーザアカウントに関連するポイント、またはこれらのアチーブメントに基づいて増分されるいくつかのタイプのポイントを有し得る。時間の経過に伴う十分なポイントの蓄積は、設計者がデスティネーションシステムまたはＡｄｄ−Ｏｎ内の新しい特徴を利用することを可能にし得る。種々のアクションまたはレベルのポイントは、デスティネーションシステムのまたはＡｄｄ−Ｏｎのユーザインターフェースが“ａｄｖａｎｃｅｄ  ｍｏｄｅ”に変更されることをトリガし得る。これは、さらなる制御の追加、ヒントラベルの除去、ドロップダウンではなく検証を有するテキストボックスなどのより複雑なもののための制御の変更、またはより迅速なシート−ソフトウェア開発が可能となるように設計者に提示されることになるページの順序およびボタンの場所の変更によるそのワークフローの変更を含み得る。或るポイントレベルへの到達はまた、例えば、匿名であるかまたは作成したユーザアカウントを有するかのいずれかの大勢の訪問者が、設計者により作成されたデスティネーションページにアクセスすることを可能にするべく、ｗｅｂｉｆｉｅｒの使用を取り巻くライセンスパーミッションルールを変更し得る。
【０３２０】
通知
例示的な実施形態によれば、デスティネーションシステムにおいて、通知ルールはファシリティを提供し、それにより、或るイベントの発生は、指定のアクションをトリガすることができる（図８３）。レギュラーユーザは、自分用の通知を設定することができる。管理者または設計者ユーザは、自分と自分の管理ドメイン内のユーザ用の通知を設定することができる。複数のイベントを取り扱うおよび／または複数のアクションを行うために、ユーザは、複数の通知を設定し得る。各通知ルールのセットアップは、通知をトリガするべきイベントについての詳細および通知がトリガされるときに行われるべきアクションについての詳細をユーザが指定することを必要とする（図８４）。通知ルールは、また有効にする必要があるときにまた設定を入力する必要がないようにすべてのその他の詳細を保った状態で無効にすることができる。
【０３２１】
スプレッドシートツールＡｄｄ−Ｏｎ／プラグインの完全に内部での動作に基づいて、イベントがサーバに伝えられるときに通知をトリガすることができ、またはウェブブラウザが、サーバに送信される通知要求をトリガすることもできるが、アクション自体がサーバに伝えられるまたは持続されるまではできないかもしれない。イベントの例は、データがページに挿入されるとき、ページ上のデータが編集されるとき、ページの構成が変更されるとき、およびａｐｐの構成が変更されるときを含む。明確にするために、イベントの例は、訪問者が高レベルのイベントをトリガした（Ｉｎｓｅｒｔページのサブミットボタンを押した）、設計者による高レベルのイベント（新しいページを作成した）、セルのイベントをトリガした（セルを変更した）、領域のイベントをトリガした（セルのグループ内の少なくとも１つのセルを変更した）、シートのイベントをトリガした、のカテゴリ内とすることができ、直接的（セルの式を変更した）または間接的（セルの式自体は変更されていないにもかかわらずセルの式の結果が変更された）の両方とすることができる。このようなアクションが起こるとき、アクションは、該アクションに対応するドメインイベントを生じ得る。
【０３２２】
通知のために用いられ得る同じドメインイベントはまた、ロギングファシリティの基礎として役立ち得る。管理者は、シートデータ、ページ構成、またはａｐｐ構成、および拒否されたアクセスなどのイベントに関するすべてのＣＲＵＤ（作成する、読み出し、更新する、削除する）動作などの、人々がそれについて通知されることに関心を持っているよりも多くのイベントをログすることを選んでよい。これらのログは、ソートされ、フィルタされ、または統計解析のために用いられ得る。デスティネーションシステムは、これらのイベントを取り扱う通知サービスを含む。
【０３２３】
Ｗｅｂｉｆｉｅｒサービスは、その設定が、発生したアクションおよびアクションが行われた特定のページまたはａｐｐと一致するイベントのタイプによりそれらがトリガされるべきであると指定する現在有効にされるものに通知ルールのリストをフィルタし得る。各このような通知ルールに関して、デスティネーションシステムは、ルールにより指定されるアクションを実行する。可能なアクションは、さらに後述するように、電子メールアクションおよびｗｅｂｈｏｏｋアクションを含む（１つの通知ルールは、１つよりも多いアクションを指定し得る）。
【０３２４】
電子メールアクションを実行するために、デスティネーションシステムは、該ルールに関して電子メールが送信されるべきであるかどうかを最初に決定し得る。電子メールが送信されるべきでない場合、残りの電子メールアクションステップを進めない。電子メールが送信されるべきである場合、システムは、電子メールメッセージの種々の部分（件名、ボディなど）を構築するのにルールにより指定されるテンプレートを用い、イベントについての情報を、存在し得る任意の対応するプレースホルダへ置き換える。イベントがデスティネーションページを指定し、且つルールが電子メールと共にページのＰＤＦコピーが送信されるべきであると指定する場合、これは、関連するページのＰＤＦコピーを生成し、これを電子メールメッセージへの添付として追加し得る。代替的に、デスティネーションページｈｔｍｌは、該ページが収容する任意の挿入フォームまたは編集フォームを含む電子メールに埋め込まれ得る。ＨＴＭＬは、ページナビゲーションメニューの除去、背景画像の除去、ＪａｖａＳｃｒｉｐｔ参照の除去、または日付を選択するためのポップアップのカレンダーではなく標準テキストボックスを用いるなどの特化されたものではなく入力フィールドに関するより標準の簡易化された制御を用いるなどの、ＨＴＭＬ対応電子メールクライアント内のその閲覧を考慮に入れるために、修正を有してもまたは有さなくてよい。埋め込みフォームのサブミットは、結果的に、デスティネーションシステムへのｈｔｔｐ  ｐｏｓｔ要求を生じることになる。ｐｏｓｔ要求のＵＲＬは、電子メールに埋め込まずにレンダリングされるときの同じデスティネーションページとは異なっていてよく、認証トークンがフォームおよびｈｔｔｐ  ｐｏｓｔに埋め込まれるためログインは要求されない異なるユーザ認証、またはより予測できないフリーフォーム入力である入力制御を考慮に入れ得る異なるデータ検証ルールをトリガしてよい。ｗｅｂｉｆｉｅｒは、次いで、ルールにリストされた電子メール受信者にメッセージを送信する。
【０３２５】
電子メールの内容は、電子メールテンプレートフォームで指定することができ、これは、件名ライン、リッチテキストテンプレートのＷＹＳＩＷＹＧ編集、ＨＴＭＬ非対応の電子メールシステムに関するフォールバック、複数の受信者（ｃｃおよびｂｃｃを含む）、ｒｅｐｌｙ−ｔｏ、および添付オプションを含む（図８５）。代替的に、市販の電子メールテンプレーティングモジュールが用いられ得る。加えて、電子メールの内容自体は、シートテンプレートを用いて指定することもでき、この場合、デスティネーションシステムは、それがデスティネーションページに関してするようにＨＴＭＬフォーマットで出力することになるが、ＨＴＭＬ非対応の電子メールクライアントのためにフォールバックの簡易化されたテキストのみのフォーマットでも出力することになる。
【０３２６】
Ｗｅｂｈｏｏｋアクションを実行するために、デスティネーションシステムは、最初にそのルールに関してｗｅｂｈｏｏｋが呼び出されるべきであるかどうかを決定し得る。呼び出されるべきでない場合、残りのｗｅｂｈｏｏｋアクションステップを進めない。呼び出されるべきである場合、ＰＯＳＴ要求のボディで送信されるイベントについての情報と共に、ＨＴＴＰ  ＰＯＳＴ要求を、ルールにより指定されるｗｅｂｈｏｏｋ  ＵＲＬへ送信する。Ｗｅｂｈｏｏｋ情報は、ＪＳＯＮフォーマットであり得るがこれに限定されない。
【０３２７】
すべての通知動作は、キューに入れられてよく、アクションをトリガしたイベントを実行することができるように非同期的に処理されてよく、これをトリガしたユーザは、電子メールまたはｗｅｂｈｏｏｋアクションが失敗するまたは完了するのに長時間かかる場合であっても、システム上で他の機能を行うことに進むことができる。それらは非同期であるため、通知はまた、バッチ処理のために格納することができる（例えば、ユーザは、通知の連続ストリームではなく、すべてのイベントの日単位のまたは週単位のダイジェストを受信することを好み得る）。
【０３２８】
手順アクション
通知イベントに対する（例えば、とりわけ上記のボタンおよび通知に関する）潜在的なアクションは、（レコードシート、テンプレートシート、仮想シート、一過性シート、構成シート、およびｗｅｂｉｆｉｅｒ内のすべての他の種類のシートなどの）任意の種類のシート上のセル上の値を挿入し、削除し、かつ設定する手順アクションを含み得る。これらの手順アクションの具体的な内容は、“＝ＩＦ（Ａ１＝１００，ＳｅｔＶａｌｕｅｓ（Ａ１：Ａ２，Ｂ１：Ｂ２，ｆａｌｓｅ）”のように他の従来の式関数内にネストされた“＝ＳｅｔＶａｌｕｅｓ（ソース、デスティネーション、パラメータ）」のように従来の宣言スプレッドシート式に類似する構文、および／または“ｄｅｓｔ＝ｓｏｕｒｃｅ”のように手順プログラミングに共通する構文で宣言され得る。ソースおよび／またはデスティネーションは、シート全体、名前付き範囲を含むシート範囲、他のシートデータを参照する式、またはその挿入ページ制御によって影響を受けるであろう基礎をなすセルを参照するのと同じ効果を有するであろう挿入ページ上の制御への参照の組み合わせであってもよい。ソースの場合は、１、“ｈｅｌｌｏ”、または１＋１などの静的値であってもよい。デスティネーションが範囲である間、ソースが静的値である場合、静的値は、デスティネーション範囲内の各セルに対して設定され得る。値を挿入する場合、手順関数ＳｅｔＶａｌｕｅｓへのパラメータは、既存の値を上書きするか、既存の値を挿入してシフトダウンするか、左に挿入してシフトするかなどを指定し得る。手順関数ＤｅｌｅｔｅＶａｌｕｅｓは、削除してシフトアップするか、削除して左にシフトするか、空のままにするかなどを指定し得る。パラメータはまた、ソースセル内の任意の式が値に分解されるべきであるか、値としてコピーと呼ばれてよいか、またはデスティネーションコピーが、式によってコピーと呼ばれてよいソースセルの式定義を保持するべきであるかどうかを指定してもよい。
【０３２９】
通知イベントに対する潜在的なアクションはまた、Ｃ＃などの手順プログラミング言語、および／または様々な共通またはカスタムスクリプト言語を用いて、スプレッドシートユーザに慣れたＶＢＡスクリプト構文を使用して設計者によって指定され得る、ルーピングまたは複雑な条件などのより複雑な手順を含む。例えば、設計者は、ＶｅｎｔｕｒｅＣａｐｉｔａｌという名前のシートの挿入イベントに以下のコードを関連付けることができる。“ｆｏｒ（ｉｎｔ  ｘ＝０；ｘ＜１０；ｘ＋＋）｛ＳｅｔＶａｌｕｅｓ（Ｏｆｆｓｅｔ（ＤｅｐａｒｔｍｅｎｔＳｉｚｅｓ！Ａ１，ｘ，０），Ｏｆｆｓｅｔ（ＤｅｐａｒｔｍｅｎｔＳｉｚｅｓ！Ａ１，ｘ，０）＊２，ＳｅｔＶａｌｕｅＰａｒａｍｓ．Ｏｖｅｒｗｒｉｔｅ｜ＳｅｔＶａｌｕｅＰａｒａｍｓ．ＣｏｐｙＢｙＶａｌｕｅｓ）；｝”新しいベンチャーキャピタルレコードが挿入されるにつれて、関連するアクションは、Ａ１〜Ａ１０における部門規模の値を２倍にし、セルのいずれかがもともと式を有する場合、それらは代わりにその後の単純な数値を有するであろう。ｗｅｂｉｆｉｅｒは、スクリプトの実行時間を制限し、利用可能な特徴または機能を制限し、スクリプトロジックを可能にするシステムに典型的な他のセキュリティ対策を講じ得る。ｗｅｂｉｆｉｅｒは、デスティネーションシステム上でのみスクリプトを実行することができ、Ｅｘｃｅｌ  Ａｄｄ−Ｏｎ内のスクリプトの実行を回避し、かつ／または排除することができる。ｗｅｂｉｆｉｅｒは、シートのメタデータにアクセスする、ページオプションのようなオフシートｗｅｂｉｆｉｅｒデータを修正する、ウェブＨＴＴＰＳ要求を送信する、ＡＰＩ呼び出しを実行する、ＳＱＬクエリを実行するためにＳＱＬデータベースに接続する、かつ／また（例えば、ＥｘｅｃＥｖｅｎｔ（ｇｕｉｄ）などのスクリプト機能を実行することによって）は電子メールを送信するなどの他のｗｅｂｉｆｉｅｒ通知イベントアクションをトリガするなどのいくつかの機能を許可し得る。これらの手順アクションを伴うシートの変更は、かかる変更に以前に関連付けられたイベントに起因して間接的に付加的な通知をトリガする可能性がある。
【０３３０】
通知イベントのための潜在的な他のトリガは、深夜もしくはｃｒｏｎ式の形態で設計者によって指定されたインターバルなどの日付または時間のロールオーバー、または式“＝ＢｕｔｔｏｎＥｖｅｎｔ（ｂｕｔｔｏｎＬａｂｅｌＴｅｘｔ，ｗａｉｔ  ｏｒ  ｑｕｅｑｕｅ）”を有するセル内でボタンが定義されるボタンクリックが含まれ、待機またはキューは、ボタンをクリックする訪問者に関連付けられたイベントがすべての実行を完了するのを待たせるべきか、またはイベントが待機されるべきであり、訪問者がその間にｗｅｂｉｆｉｅｒを使用し続けることを許可されるべきかどうかをデスティネーションシステムに指定する。通知イベントリストは、“Ｂｕｔｔｏｎ  Ｌａｂｅｌｌｅｄ  Ｒｅｓｅｔ  ａｔ  ＦｉｒｓｔＳｈｅｅｔ！Ａ１”などに見いだされるセル配置によって、どの特定のボタンが参照されるかを一意に識別する。
【０３３１】
不変性
Ｗｅｂｉｆｉｅｒのユーザは、スプレッドシート式を使用していくつかのデータが宣言されるが、最初に作成された後にデータが変更されない、または将来のある時点でフリーズされるアプリを構築することを望み得るが、これは総称して不変性と呼ばれ得る。
【０３３２】
不変性は、既に説明されているｗｅｂｉｆｉｅｒの手順能力によって達成され得る。例えば、設計者は、インボイス行レコードシートＩｎｖＲｅｃｏｒｄｓおよび関連するインボイス挿入テンプレートおよび詳細報告テンプレートを作成し得る。行レコードシートは、税金および総計算などの計算式から構成されるいくつかの列を有し得、課税式は、静的６％に設定されるＧｌｏｂｅｌＶａｒｉａｂｌｅｓと名付けられた第２のシート上の単一の値を参照し得る。すべての履歴インボイスの税金および合計を変更することなく、税率が４％に更新されることを可能にするために、設計者は、“ＳｅｔＶａｌｕｅｓ（ＩｎｖＲｅｃｏｒｄｓ，ＳｅｔＶａｌｕｅＰａｒａｍｓ．ＣｏｐｙＢｙＶａｌｕｅｓ｜ＳｅｔＶａｌｕｅＰａｒａｍｓ．Ｏｖｅｒｗｒｉｔｅ）”または簡略化された同等の“ＦｒｅｅｚｅＶａｌｕｅｓ（ＩｎｖＲｅｃｏｒｄｓ）”でスクリプトを実行する挿入ページ実行によってトリガされる通知イベント設定を有し得る。結果として、いずれかのインボイスが挿入されるたびに、いずれかのテンプレート上で直接見ることができなかった、または編集可能でなかった式を有するセルを含む、過去のインボイスからのすべての式が、ＣｏｐｙＢｙＶａｌｕｅｓパラメータによる静的値に分解されることになる。
【０３３３】
レコードのスプレッドシート表現と、ユーザインターフェース・テンプレートを使用したレコードの入力と、手順書のシート変更能力を備えたイベントモデルを組み合わせることで、ｗｅｂｉｆｉｅｒをかなりの数の追加シナリオで有効に使用することができ、これらの部分の合計よりも大きな柔軟性を備え、より少ない別個のワークフローと機能が必要となる。それにもかかわらず、ｗｅｂｉｆｉｅｒは、ページを挿入するか、または編集する上で「値を不変にする」ページオプションを使用して不変性を指定する代替の方法を提供し得、これは、訪問者がそのページを使用してデータを提出した後にすべての式を静的値に分解するであろう。
【０３３４】
モバイル考慮事項
デスティネーションシステムは、例示的な実施形態によれば、好ましくはすべてのデバイスプラットフォームに応答性があり、十分に適合し、ＨＴＭＬおよびファイル伝送などのいくつかの標準ブラウザ特徴と統合される。デスティネーションシステムはまた、デスティネーションシステム内に含まれるデータがネイティブなａｐｐ経験でユーザによりアクセスされるように、デスティネーションシステムへの標準ｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩアクセス方法を通じてネイティブａｐｐへ直接統合され得る。このような方法でのデータの提示は、ネイティブＳＤＫ環境または他の開発フレームワーク、例えば、Ａｎｄｒｏｉｄ  Ｓｔｕｄｉｏ、Ａｐｐｌｅ  Ｘｃｏｄｅ、Ｘａｍａｒｉｎ、またはＣｏｒｄｏｖａでの付加的なコーディングを通じてデスティネーションシステムにより有効にされる。
【０３３５】
さらに、デスティネーションシステムは、機能にアクセスするおよびデータを表示するためのウェブビューの使用を通じてモバイルデバイスと統合され得る。これは、ａｐｐ内のデスティネーションページ全体にアクセスすることができ、または、データのより小さいセグメントを表示するまたは特異的な機能にアクセスするのに用いることができる。
【０３３６】
デスティネーションシステムは、他のページ上のデスティネーションシステム要素の包含のすべてを可能にする十分に対話型のモジュールおよび他のコードフラグメント（スクリプト化またはコンパイルされ得る）を実行し得る。例えば、デスティネーションシステムは、第三者によりホストされるウェブサイト上にページタイプのいずれかを表示するためにＨＴＭＬインラインフレーム要素をサポートし得る。
【０３３７】
デスティネーションシステムはまた、同じモバイルデバイス上で実行されてよいまたはされなくてよいクラウドベースのファイルストレージａｐｐからのファイルのアップロードが受け入れられるモードで動作し得る。この伝送は、ダイレクトファイルアクセスによりまたはインターネットアクセス可能ＡＰＩを通じて達成され得る。
【０３３８】
本明細書の全体を通して説明はウェブページおよびブラウザを指すが、それらは、上記のようにブラウザの代わりになるモバイルエンドポイントの場合には大きくは変わらない。例示的な変更は、第１に、ページまたはこれをモバイルプラットフォームにとって一貫したものにするいくつかのユーザインターフェース要素と一緒に合わされる多くのピースを得る多くの要求のための概ねブラウザとしてこれが行われるかどうかに関係なく、ウェブブラウザとかなり類似した様態で動作するように設計および構築されるａｐｐをモバイルデバイス上にインストールさせることとして要約され得る。第２の変更として、デスティネーションシステムサーバは、あるケースでは、ソフトウェア開発産業に典型的な数多くのフォーマットおよび方法のうちの１つを用いて、結果として生じるデスティネーションページに関するＣＳＳおよびＨＴＭＬではなく異なる出力フォーマットを生成し得る。最後に、モバイルａｐｐは、ＨＴＭＬメニューとは対照的に、モバイルプラットフォームにとって特異的および一貫しているページのメニューなどのいくつかのハードコード化されたユーザインターフェース要素を有し得る。このようなハードコード化されたユーザインターフェース要素は、データリストをフェッチするためのｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しと、これらのデータリストを処理するためのモバイルａｐｐ内のハードコード化されたユーザインターフェースコードとの組み合わせであり得る。
【０３３９】
フローレイアウトへの自動変換
携帯電話などの多くのデバイスは、多種多様な解像度の小さな画面を持っている。現代のフローベースレイアウトは、このような場合にユーザ経験を向上させることができる。ｗｅｂｉｆｉｅｒは、訪問者がブラウザ、ネイティブモバイルアプリケーション、またはその他の方法を使用しているかにかかわらず、訪問者の経験および／または画面スペースの使用を最適化するために、テンプレートシートをフローレイアウトに完全にまたは部分的に変換するために様々な方法を使用し得る。
【０３４０】
テンプレートに基づいてページを生成する際に、ｗｅｂｉｆｉｅｒは、フローレイアウトに変換する方法を決定するために、テンプレートフォーマット、テンプレートコンテンツ、テンプレート使用量、テンプレートのデータソースのコンテンツ、データソース使用量、およびデータソースに関連付けられた他のテンプレートを分析し得る。フローレイアウトへの変換は、特定の行をラッピングするセル、間隔への修正、視覚グループ化を支援するための境界線または背景色などのフォーマットの追加、および／またはセルの幅への修正などのレイアウトへの最適な修正を識別することを含み得る。ｗｅｂｉｆｉｅｒは、以下に記載されるものなどのいくつかの要因を分析し、それらの使用を様々な方法で組み合わせて、レイアウトへの修正を決定し得る。例えば、ｗｅｂｉｆｉｅｒは、各ファクタをそのファクタの重要性の静的値によって重み付けし得、最も重要なファクタは、最も重要な修正を決定し、各修正に有利なファクタの数をカウントし、各修正に有利なファクタの重み付けされた合計を行うか、またはその領域の当業者に容易に明らかになるいくつかの他のアプローチを行う。
【０３４１】
Ｗｅｂｉｆｉｅｒは、それらの間に空の列を有さない２つのセルの間ではなく、空のセル上でラッピングすることに対して親和性を有し得る。この場合、単語ラッピングとほとんど同様に、通常、新しいテキストラインにラッピングするときに、ラインの末尾に空白をレンダリングすることをスキップし、空のセルがレンダリングされない可能性がある。ｗｅｂｉｆｉｅｒは、すべてまたはほとんどの行に対して、完全に空の列上のラッピングに対してより大きな親和性を有し得る。テンプレートの行がラッピングされるとき、ｗｅｂｉｆｉｅｒは、その行の前または後の垂直間隔を増加させてもよく、それにより訪問者は、レンダリングされた行のグループを単一のテンプレート行として、またはテンプレート行が単一のレコードを表す場合、単一のレコードとしてより容易に識別することができる。次いで、ｗｅｂｉｆｉｅｒはまた、一貫性を提供するために、すべての他のテンプレート行間の垂直スペースを増大させ得る。代替的に、ｗｅｂｉｆｉｅｒは、例えば、完全に空であるラッピングされたテンプレート行の周りに第１の低いか、または高いテンプレート行を配置することによって、垂直セクションを識別し得、そのセクション内のテンプレート行間の垂直スペースのみを増大させ得、特に多くのセクションを有するテンプレートにおいて、スペースを明確にするための一貫性と効率的に使用するためのバランスを可能にする。ｗｅｂｉｆｉｅｒは、テンプレートコンテンツおよびフォーマットを分析するとともに、いくつかの行が非常に類似していることを決定し得、それを垂直セクションとして識別し得、さらに、そのセクション内のすべての行に対して同じ列上にラッピングするための親和性を有し得る。ｗｅｂｉｆｉｅｒは、垂直セクションまたは水平セクションを識別するために境界を分析し得る。例えば、境界が３つの水平に隣接するセルの周りにある場合、ｗｅｂｉｆｉｅｒは、それらのセル間をラッピングしないことに対して親和性を有し得、かつそれらのセルの前後の垂直スペースを増大させ得る。ｗｅｂｉｆｉｅｒは、テンプレート行が第１の列から始まる１つまたは複数の空のセルを左に有すると決定し得、その行にコンテンツを有する第１のセルが画面の左端に近づいてレンダリングされるように、それらの空のセルをスキップし得る。ｗｅｂｉｆｉｅｒは、いくつかの行が垂直セクション内にあり、コンテンツの左側に異なる数の空のセルを有していると決定し得、そのセクション内のすべての行について同じ数の空のセルを左側にスキップし得る。
【０３４２】
Ｗｅｂｉｆｉｅｒは、レコードシートなどのデータソースのメタデータを分析して、フローレイアウトへの自動変換を支援し得る。例えば、テンプレートが２つのセルおよび１つのセル参照レコードシート列Ａを有する場合、第２のセル参照レコードシート列Ｂは“＝Ａ  ＊２”等の式を有し、一方、第３のセルはＡおよびＢのいずれに対する式参照も有さないレコードシート列Ｃを参照し、ｗｅｂｉｆｉｅｒは、第１のセルおよび第２のセルが視覚的によりグループ化されるように、第２のセルと第３のセルとの間でブレイクする親和性を有し得る。
【０３４３】
Ｗｅｂｉｆｉｅｒは、テンプレートのデータソースが、フローレイアウトをレンダリングする最適な方法を決定するために分析され得る付加的な情報を有する第２のテンプレートによって使用されることを決定し得る。例えば、ＲｅｐｏｒｔＩｎｖｏｉｃｅテンプレートは、“ＩｎｖｏｉｃｅＲｅｃｏｒｄｓ”のデータソースを有してもよく、これは、“ＩｎｓｅｒｔＩｎｖｏｉｃｅ”挿入テンプレートによっても使用される。ｗｅｂｉｆｉｅｒは、ＩｎｓｅｒｔＩｎｖｏｉｃｅが、ＩｎｖｏｉｃｅＲｅｃｏｒｄの列Ｄおよび列Ｌデータを参照するセルの周りにいくつかの空の行および境界を有すると決定し得る。レンダリング中のＲｅｐｏｒｔＩｎｖｏｉｃｅに、同じＩｎｖｏｉｃｅＲｅｃｏｒｄｓの列ＤおよびＬを参照するセルが密接に関連していることを示す境界線や空の行などの表示がない場合でも、ｗｅｂｉｆｉｅｒはそれらの間をラッピングしたり、その他の方法でそれらを視覚的にグループ化したりしないことに親和性を有し得る。ｗｅｂｉｆｉｅｒは、境界と同じように、周囲のセルと比較して異なる背景またはテキストカラーを有するセルの領域を処理し得る。
【０３４４】
関係性の定義
いくつかの要求の多い使用シナリオでは、設計者は、レコードシートにおけるレコードの一次セット、並びに、各一次レコードに関する別のシートにおける１つまたは多くの“ｓｅｃｏｎｄａｒｙ  ｒｅｃｏｒｄｓ”を有することを望む場合があり、設計者は、例示的な実施形態によれば、レコードの一次セットの、伝統的なデータベースソフトウェアセンスのような“ｐｒｉｍａｒｙ  ｋｅｙ”によって二次レコードを一次レコードに属するものとして識別することを意図する。手短に言えば、設計者は、一次レコードデータだけでなく二次レコードデータもポピュレートされるテンプレートシートを有するようにするために、レコードセット間で表される関係性を有することを意図し得る。例えば、１つのレコードシートは、列“ｃｏｍｐａｎｙ  ＩＤ”および“ｃｏｍｐａｎｙ  ｎａｍｅ”を有してよく、１つの行は、値に関する“１”および“Ｐｌｅａｓａｎｔ  Ｓｏｌｕｔｉｏｎｓ”を有する。第２のレコードシートは、列“ｃｏｍｐａｎｙ  ＩＤ”および“ｓｐｅｃｉａｌｉｚａｔｉｏｎ”を有してよく、１つの行は、“１”および“Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｃｏｎｓｕｌｔａｎｔｓ”を有する。例示的な実施形態によれば、設計者が、“Ｐｌｅａｓａｎｔ  Ｓｏｌｕｔｉｏｎｓ”と“Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｃｏｎｓｕｌｔａｎｔｓ”との両方の記載を作成するテンプレートシートに基づいて詳細ページを表示することを望む場合、ｗｅｂｉｆｉｅｒシステムは、このような使用をサポートする。
【０３４５】
例えば、デスティネーションシステムは、Ａｄｖａｎｃｅｄモードまたはセクションにおいて、一次および二次レコードセットとしてのそれらの一次キーの関係性を示すべく、設計者が１つのシート上の列または行および別のシート上の別の列または行を選択することを要求することもできる。代替的に、この関係性の指定は、構成シートで行うこともできる。その後、デスティネーションシステムは、設計者がソース入力制御において１つの範囲またはシートだけでなくそれらのリストも指定することを可能にし得る、またはデスティネーションシステムは、指定される第１の範囲またはシートおよびこれを二次シートに結びつける一次キーの関係性に基づいて自動的に暗示される付加的な入力を有することができる。テンプレートシート内からレコードデータを参照するためのどこか別の場所で説明される方法は、その点で適用可能であり得る。設計者は、レコードシートのいずれかへのセルの式参照を用いてよく、該式参照をパーシングすることにより、それが設計者がそこからデータを取得することを意図していた一次または二次レコードセットのいずれであったかが明らかとなるであろう。二次レコードセットから参照されるデータをポピュレートするデスティネーションシステムは、一次レコードセットからポピュレートするのと同じ様態で行われることになる。
【０３４６】
“ＡＰＰ  ＴＥＭＰＬＡＴＥＳ”のライブラリ
例示的な実施形態によれば、ページのリストおよびそれらの共有パーミッションなどのデスティネーションシステムからの付加的な情報を有するまたは有さない、あらかじめ設計されたおよび／またはあらかじめ構成されたスプレッドシート定義を含むＡｐｐ  Ｔｅｍｐｌａｔｅｓ全体を、設計者の所有するｗｅｂ−ａｐｐの開始点としてコピーするおよび使用するべく設計者のコミュニティから他の設計者ユーザへ利用可能であり得る（図２２）。これらは、別々にリストすることもでき、ａｐｐ内のページタイプ、レコードシート上の列の名前、任意のセルの内容からのキーワード、存在する日付フィールドなどのセルフォーマット、並びに、どんな設計者が該Ａｐｐ  Ｔｅｍｐｌａｔｅ  ｗｅｂ−ａｐｐを用いているかまたはどんな産業に設計者の雇用主が属しているかの関連性に基づく、目的、カテゴリ、産業、またはスマートサーチによりサーチ可能である。
【０３４７】
スマートサーチはまた、２人の設計者をより類似しているとして関連付けるべく、同じ他の設計者からどの他のＡｐｐテンプレートが用いられているかをチェックすることもできる。代替的に、デスティネーションシステムは、２人の設計者の類似性レベルを判定するべく、セルの内容からのキーワードの存在または上記のサーチパラメータのいずれかに基づいて、１人の設計者に関する複数のスプレッドシート定義の組を別の設計者に関するものと比較することもできる。サーチは、次いで、上記のファクタ、ファクタの発生頻度、およびファクタの重要性のうちの１つまたは複数に基づいてサーチ結果を並べ替えることもできる。システムは、次いで、ユーザのサーチ経験を最適化するための一般的な商業的に公知の技術および市販のライブラリを利用することもできる。
【０３４８】
ＡＤＤ−ＯＮのインテグレーションおよび通信
スプレッドシートツール内のプラグインまたはＡｄｄ−Ｏｎは、クライアント−サーバアプリケーションモデルに関するソフトウェア開発産業に典型的な多くの方法で、デスティネーションシステムサーバと通信し、そのユーザインターフェースを表示し得る。例えば、図のいくつかは、デスティネーションシステムが主としてＨＴＭＬインターフェース、伝統的なウェブページを取得するためにｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しを用いるＡｄｄ−Ｏｎの結果を例示し、例示的には、埋め込みブラウザウィンドウのように動作するフレームにおけるウェブページを示す。これは、Ａｄｄ−Ｏｎのユーザインターフェース要素の多くが再使用され、インストールされたＡｄｄ−Ｏｎを有さない設計者に関するデスティネーションシステムの管理ページ上のそれらのそれぞれのカウンターパートと概ね一致することを可能にする。セルの範囲を選択するのにマウスを用いる能力などのＡｄｄ−Ｏｎ内のいくつかの機能は、設計者が範囲をタイピングすることに限定するために制限、除去、または変更されてよく、または代替的に、デスティネーションシステム管理ページを有する埋め込みスプレッドシートツール上で行われ得る。簡略のため、Ａｄｄ−Ｏｎユーザインターフェースまたはデスティネーションシステム管理ページを表す添付図は、添付されていない場合であっても、それらのそれぞれのカウンターパートを有するとみなされるべきである。
【０３４９】
スプレッドシートツールへのＡｄｄ−Ｏｎのインテグレーションは、プラグインが統合されるスプレッドシートツールに応じて変化し得る。例えば、Ｅｘｃｅｌとのインテグレーションは、ＥｘｃｅｌのＣＯＭ  Ｉｎｔｅｒｏｐライブラリ（開発者用ドキュメントがｈｔｔｐｓ：／／ｍｓｄｎ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｅｎ−ｕｓ／ｌｉｂｒａｒｙ／ｍｉｃｒｏｓｏｆｔ．ｏｆｆｉｃｅ．ｉｎｔｅｒｏｐ．ｅｘｃｅｌ（ｖ＝ｏｆｆｉｃｅ．１５）．ａｓｐｘで公開されている）またはＪａｖａＳｃｒｉｐｔ  ＡＰＩ  ｆｏｒ  Ｏｆｆｉｃｅ（開発者用ドキュメントがｈｔｔｐｓ：／／ｄｅｖ．ｏｆｆｉｃｅ．ｃｏｍ／ｄｏｃｓ／ａｄｄ−ｉｎｓ／ｄｅｖｅｌｏｐ／ｕｎｄｅｒｓｔａｎｄｉｎｇ−ｔｈｅ−ｊａｖａｓｃｒｉｐｔ−ａｐｉ−ｆｏｒ−ｏｆｆｉｃｅで公開されている）を用いて行われ得る。Ｇｏｏｇｌｅ  Ｓｈｅｅｔｓなどのクラウドベースのスプレッドシートツールが、“ｓｐｒｅａｄｓｈｅｅｔｓ．ｇｅｔ（ｒａｎｇｅｓ，  ｉｎｃｌｕｄｅＧｒｉｄＤａｔａ）”を用いるシート範囲の取得などの容易にアクセス可能な理解できるｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ機能を有するＧｏｏｇｌｅ  Ｓｈｅｅｔｓ  ＡＰＩ（開発者用ドキュメントがｈｔｔｐｓ：／／ｄｅｖｅｌｏｐｅｒｓ．ｇｏｏｇｌｅ．ｃｏｍ／ｓｈｅｅｔｓ／で公開されている）などのウェブサービスを用いて統合され得る。
【０３５０】
スプレッドシートツールのインテグレーション・ファシリティにより許されるならば、システムは、ページの追加などのアイテムに関係したアクションを行う意図を示すユーザの修正したプロセスを可能にするべくセルまたはシートタブなどの領域に関する右クリックメニューに統合することができる。例えば、ページの追加を選び、次いで、ソースを指定することの代わりに、ユーザは、セルのグループ上で右クリックし、“ａｄｄ  ｐａｇｅ”を選択することもでき、それにより、追加ページ画面は意図されるソースを既に知っていることになり、ユーザにその情報を促す必要はない（図１４）。
【０３５１】
付加的な設計者ナビゲーション
Ｗｅｂｉｆｉｅｒは、多数のシートで動作し得、多くの種類のシートに同時に作用し得るため、シートの付加的な整理およびナビゲーションは、設計者にとって有益であり得る。ｗｅｂｉｆｉｅｒは、埋め込まれたスプレッドシートツールを有するデスティネーションシステムを有し得、また、外部スプレッドシートツールと統合されたＡｄｄ−Ｏｎも有し得る。以下の態様は、いずれかと同様に適用され得る。
【０３５２】
スプレッドシートツールは、通常、各タブがワークブック内の単一のシートを表す単一のタブ列を有する。ｗｅｂｉｆｉｅｒは、例えば、それぞれがグループ化されたオートゲンシート、仮想シート、および／または設計者構築シートと共に、それらの種類によって自動的にタブをグループ化し得、仮想テンプレートシートおよび仮想レコードシート、またはユーザによって修正されないオートゲンレコードシートおよびユーザによって修正されたオートゲンレコードシートなどのサブタイプに基づいてグループ化し得る。ｗｅｂｉｆｉｅｒは、進行中のグループ化を支援するために、シートが最初にどのように作成されたかを示す各シートのメタデータを記録し得る。シートの変更は、ユーザが“ａｕｔｏｇｅｎ  ｒｅｃｏｒｄ  ｓｈｅｅｔｓ  ｕｎｍｏｄｉｆｉｅｄ  ｂｙ  ｔｈｅ  ｕｓｅｒ”グループ内のシートを修正するなどの、あるグループから別のグループへのタブの移動をもたらし得る。タブのグループ化は、グループ名だけが表示される慣れたメニュースタイルで行うことができるが、グループ名をクリックすると、サブグループのリストやシートのリストが表示される。ｗｅｂｉｆｉｅｒは、それが表すシートまたはグループの種類に基づいて、自動的にカラーコードおよび／またはその他の方法でタブの外観を変更し得る。
【０３５３】
設計者がセルに式を入力する過程にあるとき、スプレッドシートツールは、典型的には、範囲定義をタイプするのではなくセルをクリックすることによってセルの範囲をユーザが選択することを可能にし、ツールは、ユーザが別のシートのタブをクリックし、そのシートから１つまたは複数のセルを選択し、選択された範囲が式に自動的にタイプされるように入力されるセル式テキストに焦点を保持することを可能にし得る。同様に、ｗｅｂｉｆｉｅｒは、タブならびにグループおよびサブグループを、焦点を失うことなくクリックすることを可能にし得る。グループまたはサブグループ内の特定のシートがクリックされ、そのシートが可視になると、ｗｅｂｉｆｉｅｒはまた、シートのタブを一時的に移動するか、または複製して、グループと並んでタブのトップレベルにあることができる。ｗｅｂｉｆｉｅｒは、ユーザが別のシートを選択した後にシートのトップレベルタブを戻すか、または削除してもよいか、または最近使用されたタブとして、トップレベルとして表示される最近のタブの数の制限に達するまでタブを保持してもよく、そのとき、最近最も使用されていないトップレベルタブは削除されるであろう。
【０３５４】
典型的には、設計者に利用可能にすることができるが、まだアクセスされていない可能性がある多数の潜在的なオートゲンおよび／または仮想シートが存在する。例えば、基礎として選択されるセルの各異なる領域について異なる仮想行レコードシートを作成することができる。このような場合、グループ下の１つのタブは動的であり得、それがどのセル領域に基づいているかなど、どのシートが意図されているかについて設計者から付加的な情報を要求するダイアログをもたらし得る。選択されると、そのシートは再びダイアログに入力を提供する必要なく、最近アクセスされた仮想シートとして直接表示され、設計者が式をタイプする過程にある場合、焦点は保持され、設計者は式編集が継続されていることをツールに指示することなく、シートから領域を選択するように進むことができる。
【０３５５】
スプレッドシートツールとのタイト・インテグレーション
Ｗｅｂｉｆｉｅｒは、スプレッドシートツールとは別個のアプリケーションである必要はなく、外部アプリケーションにアクセス可能にされた手段を介するスプレッドシートツールとの通信に限定される必要はない。ｗｅｂｉｆｉｅｒは、代わりに、タイトな関係性を有してよく、それにより、これは、スプレッドシートツールとのより深いおよび／またはよりバックエンドベースのインテグレーションおよび通信チャネルを有し得る。これはまた、本明細書で「タイト・インテグレーション」と称され得る。
【０３５６】
いくつかの実施形態によれば、スプレッドシートツールは、デスティネーションシステムサーバのページ内に埋め込まれる、設計者がデスティネーションシステムの管理ページを訪問するときに伝統的なスプレッドシートツールの任意のよく知られた様態でスプレッドシート定義を編集することを可能にするスプレッドシート制御を有する、ウェブベースのスプレッドシートシステムであり得る。代替的に、逆が可能であり、それにより、ｗｅｂｉｆｉｅｒは、クラウドのスプレッドシートツールのウェブインターフェース内に埋め込まれる制御であり得る。いずれのケースにおいても、設計者に提示されるユーザインターフェースは、制限されたインテグレーションポイントを可能にする別個のアプリケーションであるスプレッドシートツールよりも、設計者のためにより一層タイトに統合されるおよび合理化されることが可能である。例えば、ブラウザでのナビゲーティングは、スプレッドシートとデスティネーションシステムＵＲＬとの両方の統一された歴史を有することになり、メニューは、スプレッドシートツールのメニューリンクとデスティネーションシステムのメニューリンクとの両方が、アプリケーション境界によって部分的に分離されるのではなく、論理グループにグループ化されるように編成され得る。
【０３５７】
上記のようにユーザインターフェースがよりタイトに統合されるように実装されるか否かに関係なく、スプレッドシートツールとｗｅｂｉｆｉｅｒとの間のデータ転送、同期、および他のバックエンドプロセスは、同様にタイト・インテグレーションを有してもまたは有さなくてもよい。例えば、ｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しではなく、ｗｅｂｉｆｉｅｒは、ｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しの部分的または完全置換として、スプレッドシートツールのＤＬＬライブラリへの関数呼び出しを用い得る、または逆に、スプレッドシートツールは、ｗｅｂｉｆｉｅｒのＤＬＬライブラリへの共通の関数呼び出しを用い得る。これは、ｗｅｂｉｆｉｅｒの性能の利点を提供し得るとともに、共有メモリアクセス、ミューテックスおよびセマフォなどの低レベルコーディネーションオブジェクト、共有ファイルへのアクセス、基礎をなすデータベースへの共有アクセス、およびＤＬＬライブラリの共用などの当業者に公知のさらなるプログラミング技術を利用するためのインテグレーションを可能にする。このような融通性は、例えば、２つのコンポーネント間のリアルタイムの変更通知に有利であり、２つのコンポーネントは、ｗｅｂｉｆｉｅｒと、スプレッドシートツールを指す。
【０３５８】
代替的に、タイト・インテグレーションは、ｗｅｂｉｆｉｅｒがウェブベースのスプレッドシートツールの基礎をなすデータベース・データによりダイレクトにアクセスすることを可能にし得る、または逆に、ウェブベースのスプレッドシートツールがｗｅｂｉｆｉｅｒの基礎をなすデータベース・データによりダイレクトにアクセスすること、１つのコンポーネントのデータベーステーブルから別のコンポーネントのデータベーステーブルへ参照されるデータベース外部キーなどにより各コンポーネントのデータが他のディレクトリのデータを参照することを可能にするように特異的に設計された設計スキーマと完全に共有されるデータベースを有すること、または他のコンポーネントからのデータを含む列Ｃと同じデータベーステーブル上の列における１つのコンポーネントに関するデータを有することを可能にする。ダイレクトアクセスは、顕著な性能の利点を提供し得るおよび実装の複雑さを低減し得る。例えば、タイト・インテグレーションは、デスティネーションページのレコードデータが変更されたかどうかを単一のＳＱＬクエリが確認することを可能にし得る、この場合クエリはデータベース内で効率よく評価される。このようなクエリの例は、デスティネーションページのソースデータの定義に関係するデータベーステーブルを、変更されたスプレッドシート内の特異的なセルの変更ログを有するデータベーステーブルに結合することを含み得る。このデータベースレベルでのタイト・インテグレーションなしでは、ｗｅｂｉｆｉｅｒシステムは、例えば、スプレッドシートツールのｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩから大量のセルデータをフェッチしたかもしれず、それにより、ウェブベースのスプレッドシートツールがそのデータベースからデータをフェッチし、これをｗｅｂｉｆｉｅｒデータベースからフェッチすることにより前に得られたセルデータと比較し、変更されたセルのリストを、該ページへのセル参照を利用するデスティネーションページのすべてにマップバックすることになったかもしれない。
【０３５９】
加えて、ｗｅｂｉｆｉｅｒとスプレッドシートツールがスプレッドシート定義に共通のスキーマで通信するのではなく、タイト・インテグレーションは、データベース・データに関する全く異なるスキーマを用い得る、この場合、スキーマは、一方または両方のコンポーネントにとって処理がより効率的である。例えば、典型的なスプレッドシート定義は、シートにより編成されたＸＭＬデータを有し、該シートに関するすべてのセルは、各シートの定義内でネストされ、書式設定および式および値などの種々のセル属性は、各セルのＸＭＬ定義内でネストされ得る。データベースレベルでのタイト・インテグレーションによれば、例は、非ＸＭＬであり、列“ｓｈｅｅｔＩｄ”、“ｒｏｗＩｄ”、“ｃｏｌｕｍｎＩｄ”、および“ｃｅｌｌＣｏｎｔｅｎｔｓ”を有するデータベーステーブルなどの、ネストされるのではなく正規化されるデータベースレコードを有し、この場合、ＩＤは他のデータベーステーブルを指す。さらに、データベーススキーマは、一緒にグループ化されたセルの内容を有する必要さえもない。セルの内容は、代わりに、１つのデータベーステーブルがセル書式設定のすべてを有し、異なるデータベーステーブルがセルの式を有し、第３のデータベーステーブルが、評価された式からのセルのキャッシュ値を有するように分割されてよい。さらに、データベーススキーマは、ユニークＩＤおよび式により簡単に定義される“ｕｎｉｔｓ”のリストを有する１つまたは複数のデータベーステーブルを有し得るので、セルは、行および列に編成される必要はないかもしれず、スキーマはまた、データがよく知られたスプレッドシートとして設計者に提示されることになるまたは設計者がスプレッドシートフォームにおいてデータと一時的に対話しているときなどの選択的状況で、ユニットが行および列としてマップバックされることを可能にする別個の１つまたは複数のテーブルを有し得る。
【０３６０】
タイト・インテグレーションはまた、デスティネーションシステムおよびスプレッドシートツールが、同じ単一サーバまたはサーバのグループ上に常駐するだけでなく、分散クラウドコンピューティングプロセスの最も効果的な使用を協調することも可能にし得る。例えば、増加した負荷に対応するべく付加的な分散サーバがスピンアップされる必要がある場合、付加的なサーバは、特定のｗｅｂ−ａｐｐに関係するすべての設計者および訪問者要求をデリゲートしてよく、該特定のｗｅｂ−ａｐｐに関するすべてのデータと共に両方のコンポーネントのインスタンスを提供されてよい。ｗｅｂ−ａｐｐ境界にわたるこのようなデリゲーションは、他のサーバへの最小限の伝送が必要とされる状態で、付加的なサーバがｗｅｂ−ａｐｐに関して効率的なユニットのままであることを可能にすることになる。対照的に、タイト・インテグレーションなしでは、これは、ｗｅｂ−ａｐｐおよび関連するｗｅｂｉｆｉｅｒインスタンスをホストする特定のサーバが同じサーバであるまたはさらには同じｗｅｂ−ａｐｐに関するスプレッドシートツールをホストするサーバに地理的に近いことを保証するべくより複雑となり、したがって、コンポーネント間の通信は、より複雑であるかまたはあまり効率的ではない。
【０３６１】
全体として、タイト・インテグレーションによれば、スプレッドシートツールとｗｅｂｉｆｉｅｒは、別個のアプリケーションである必要はなく、双方の間の通信は、スプレッドシート定義の形態である必要もＡＰＩを通じる必要もなく、データのストレージは、スプレッドシート定義の形態である必要はないが、設計者はそれでもなおレコードおよび／またはＵＩテンプレートを、それらがユーザインターフェースにスプレッドシートフォームで表される状態で操作することができ、訪問者は、スプレッドシートフォームにおけるものではなく依然としてデスティネーションページからのデータと対話することができる。
【０３６２】
図３Ｂは、前述のタイト・インテグレーションを用いる例示的なソフトウェア・アーキテクチャを示す。図３Ｂでは、組み合わされたタイトシステム４５０は、スプレッドシートツール論理４５２とＷｅｂｉｆｉｅｒ論理４５３を備え、両方とも共通のメモリ４５１を共有し、その両方とも、通信機構４１０、共有されたライブラリなどと統合される。
【０３６３】
図３Ｂによりさらに例示されるように、設計者は、ブラウザ４５４を用いて、１つまたは複数のワークシートへのレコードシートおよびテンプレートシートの変更を作成しまたは行い、データの変更が、部分的スプレッドシート定義を有するｈｔｔｐ  ｐｏｓｔ要求としてまたは変更イベントとしてタイトシステムのスプレッドシート論理４５２に転送され得る４０１ａ。スプレッドシート論理４５２は、設計者の変更を格納する４０２前にデータを代替の“Ｅｆｆｉｃｉｅｎｔ  Ｆｏｒｍａｔ”に変換し得る、または、データを、ネイティブなスプレッドシートフォーマットで格納し得る。設計者は、同じまたは異なるブラウザ４５５を用いてデスティネーションページ構成への変更を作成しまたは行い、これは、ｈｔｔｐ  ｐｏｓｔ要求としてＷｅｂｉｆｉｅｒ論理コントローラ４５３に転送され４０１ｂ、その後、メモリ４５１に格納される４０２。
【０３６４】
デスティネーションページを提供するための訪問者のブラウザ４５６からＷｅｂｉｆｉｅｒ論理４５３へのｈｔｔｐ  ｇｅｔ要求４０３ｂに応答して、Ｗｅｂｉｆｉｅｒ論理４５３は、メモリ４５１から必要なデータを取得する４０４。Ｗｅｂｉｆｉｅｒ論理は、テンプレートシートからの値および書式設定を評価および参照し、且つテンプレートシートに基づいて識別されるレコードシートからの値を評価および参照することにより、データをｈｔｍｌデスティネーションページへ変換し得る。デスティネーションページは、訪問者のブラウザ４５６に送信され得る４０５ｂ。図３Ｂが例示するように、テンプレートシートでのみ見受けられ、レコードシートでは見受けられないテキストラベル、ＲｅｃｏｒｄＳｈｅｅｔ！Ａ１から生じるテキストラベル、ＲｅｃｏｒｄＳｈｅｅｔ！Ｃ２の評価からの“１００”の値、およびＲｅｃｏｒｄＳｈｅｅｔ、チェックボックスに関するＲｅｃｏｒｄＳｈｅｅｔ！Ａ２、およびテキストボックスに関するＲｅｃｏｒｄＳｈｅｅｔ！Ｂ２からの値を有するテンプレートシートにより定義されるＨＴＭＬ入力制御を有するページを訪問者は閲覧する。図３Ｂはさらに、訪問者がブラウザ４５６においてチェックボックスをチェックし、サブミットし、結果的にブラウザがｈｔｔｐ  ｐｏｓｔ要求４０６ｂをＷｅｂｉｆｉｅｒ論理コントローラ４５４に送信できることを例示する。Ｗｅｂｉｆｉｅｒ論理４５３は、ｐｏｓｔ要求を処理し、メモリ４５１を新しいデータで更新し、随意的に効率的なフォーマットまたはシステムが用いるどんなフォーマットも格納する。設計者のブラウザ４５４が依然としてアクティブなセッションを有する場合、スプレッドシート論理コントローラ４５２は、メモリ４５１からまたは代替的に統合された通信機構４１０を通じて、更新されたデータ４０８を取得し、データを、１つまたは複数のスプレッドシート定義、または設計者ブラウザ４５４に提示されるスプレッドシート定義を更新するのに十分な変更イベントへ変換し、設計者のワークシートがセルＡ２に“ｔｒｕｅ”を表示するように、それらを設計者のブラウザ４０９に送信する４０９。
【０３６５】
図３Ｂによりさらに例示されるように、モバイルアプリケーション上で実行する訪問者のモバイルデバイス４５７からのｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出し４０３ｍ（例えば、ブラウザとは対照的に）は、ｈｔｔｐ  ｇｅｔ要求４０３ｂに置き換え得る。このケースでは、Ｗｅｂｉｆｉｅｒ論理４５３は、モバイルアプリケーションに、ｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出しへの応答を潜在的にＸＭＬフォーマットで送信し得る４０５ｍ、これは、訪問者のためのインターフェースを生成するべく、デバイスまたはオペレーティングシステムに特異的な設計情報と共にモバイルアプリケーションにより処理される。この例でのように、モバイルデバイス４５７のデスティネーションページのレンダリングは、異なるレイアウト、異なる制御タイプ、および／またはいくつかのレコードデータの欠如を有するという点で訪問者ブラウザ４５６のデスティネーションページのレンダリングとは異なり得る。図３Ｂは、同じくテキストボックス値をｔｒｕｅに変更し、モバイルデバイス４５７上のサブミットをクリックし、結果的にモバイルアプリケーションがｗｅｂ−ｓｅｒｖｉｃｅ  ＡＰＩ呼び出し４０６ｍをＷｅｂｉｆｉｅｒ論理コントローラ４５３に送信する、訪問者の能力を例示する。Ｗｅｂｉｆｉｅｒ論理４５３は、ｗｅｂ−ｓｅｒｖｉｃｅにより受信されたデータを処理し、メモリ４５１を新しいデータで更新する。残りのステップは、訪問者ブラウザから結果的に生じるステップと同様であり得る。図３Ｂにより例示されるように、デスティネーションページは、モバイルアプリケーションを実行する訪問者のモバイルデバイス４５７に送信され得る４０５ｍ（例えば、ブラウザとは対照的に）、またはモバイルデバイス上で実行するブラウザにサーブされ得るが、モバイルデバイスの１つまたは複数の特徴の外観（例えば、画面サイズ、ハードウェア機能など）に基づいてデスティネーションページを変更する。
【０３６６】
他の特徴
システムは、“ｌｉｓｔ  ｉｔｅｍ  ｔｅｍｐｌａｔｅ”と同じテンプレートシートの方法を用いることができる。例えば、“Ｌｉｓｔ”のページタイプを作成することもでき、この場合、入力および出力は、ユーザがその詳細を閲覧するのに行を選択することを必要とすること以外は、“ｄｅｔａｉｌｓ”ページタイプと同一となり、すべての行レコードは、リストフォームにおいて次々に表示されることになり、リスト上の各レコードは、アイテムテンプレートに従って表示される。レコードごとに情報のいくつかの行が必要とされるが、全詳細ページを保証するのに十分ではない場合、または詳細ページへの繰返しのナビゲーティングは望ましくないため、これは、例えば、行レコードリストが訪問者に表示されることを可能にする。
【０３６７】
インターフェースの全体を通して、デスティネーションページが訪問者にどのように見えることになるかを描画するサムネイルが設計者に提示され得る。サムネイルは、ユーザインターフェースにおいてインラインであり得る（例えば、図２８に示すように）および／または画面の一部の上に浮かび上がるポップアップまたは特異的な制御（例えば、図１１に示すように）として描画され得る。本明細書に含まれる図面の多くに例示されるように（少なくとも図２８および図１１を含む）、サムネイルは、図面の描画されたスプレッドシート定義からのデスティネーションページの結果を描画し得る。
【０３６８】
いくつかの態様によれば、ページタイプは、或る時間内に指定される自動リフレッシュオプションを有することができ、これは、クライアントアプリケーションまたはブラウザに、デスティネーションページを訪問者に関して周期的に、自動的にリフレッシュさせることになる（図４８）。代替的に、通知およびロギングのための同じ手法を、ページまたはページの一部が新しい情報を有し、通知が、クライアントにページを更新するのに必要な情報を提供することになるか、またはクライアントが、ページをリフレッシュするべく新しい要求を送信することになる、通知オープンクライアントセッションを押すのに用いることができる。いずれの手法の使用も、閲覧者の対話なしに新しい情報が常に可視であるように、ウェブページを訪問し、要求をリフレッシュする能力を有することができる、ブラウザにより動力を与えられるものなどの無人ウォールダッシュボードの使用シナリオの利点を有し得る。
【０３６９】
いくつかの態様によれば、デスティネーションシステムのパーミッションシステムはまた、訪問者パーミッションまたはページパーミッションだけでなく、設計者パーミッションを制限するルールを有し得る。設計者パーミッションは、ａｐｐごとの、シートごとの、またはページごとの粒度レベルを有する読出し専用、読出しおよび共有、または読出しおよび共有および更新などのアクセスタイプを含み得る（図２１）。例えば、ａｐｐ  ＥｘａｍｐｌｅＡｐｐ上の読出し専用パーミッションは、設計者がＥｘａｍｐｌｅＡｐｐ内で用いられる任意のシートに関するスプレッドシート定義を修正することを可能にせず、ＥｘａｍｐｌｅＡｐｐ内のページに関するページ構成への変更を可能にしないが、設計者がスプレッドシート定義並びにそれらの基礎をなす式および設定を見ることを可能にすることになる。
【０３７０】
いくつかの態様によれば、デスティネーションシステムは、多くのスプレッドシートツールが行うように、１つまたは複数のセルに指定のＵＲＬへのクリック可能なハイパーリンクを作成する、セル書式設定をサポートすることができる。これは、ＵＲＬを指定するセルテキスト上の属性を用いて行うことができ、ＵＲＬの存在は、下線および青色などの他の書式設定の変更を示し得る。
【０３７１】
ｗｅｂｉｆｉｅｒは、ページ上のセキュリティパーミッションと同様に、設計者がデータシートおよび／または領域のリストを提供し、それらにセキュリティパーミッションを指定することを可能にし得る。次いで、ｗｅｂｉｆｉｅｒは、ページごとのセキュリティに加えて、これらのルールをセキュリティの第２のレイヤーとして使用し得る。次いで、ｗｅｂｉｆｉｅｒは、それらのページに対する要求が基礎となるデータへのアクセスを禁止する結果になる場合、ページ全体またはページの一部へのアクセスをブロックし得る。ｗｅｂｉｆｉｅｒは、アクセス違反を記録し、かつ／または管理者または設計者に通知を送信し得る。
【０３７２】
Ｗｅｂｉｆｉｅｒは、ネストされたテンプレートが第２の程度までネストされていることを検出し得る。ｗｅｂｉｆｉｅｒは、最も深くネストされたテンプレートが埋め込まれるように指定された領域をクリックすると、その最も深くネストされたテンプレートのためのポップアップが生じるように、ポップアップ内に任意のそのような第２の程度ネストされたテンプレートを表示し得る。例えば、インボイステンプレートがＩｎｖｏｉｃｅアイテムのネストされたテンプレートを有し、Ｉｎｖｏｉｃｅアイテムテンプレートが、そのインボイスアイテムの過去の購入の履歴のより深くネストされたテンプレートを有し、これは、履歴テンプレートインボイスアイテムテンプレートに割り当てられたスペースに表示することが不可能であり得る場合、ｗｅｂｉｆｉｅｒは、インボイスアイテムの一部をクリックするとポップアップ履歴が引き上げられるインボイスアイテムを有するインボイスページを自動的に表示し得る。深くネストされた入力フォーマットの同様の例が適用され、ここで最も深くネストされたテンプレートは、ポップアップを利用して第２の程度の入力詳細を提供し得る。
【０３７３】
先に述べたように、ｗｅｂｉｆｉｅｒは、設計者が、他の設計者がアプリを修正するための様々な粒度のパーミッションを指定することを可能にし得る。ｗｅｂｉｆｉｅｒはまた、設計者が、訪問者が入力および編集中に式を提供することができ、式がただ数学的であるかどうか、数式を使用して同じページ上で編集するために利用可能な他のセルを参照することができるか、またはそれらの編集可能または同じページ上で見えるセル以外のセルを参照することができるかに関する、様々な粒度のパーミッションを指定し、制約を特定することを可能にし得る。このようにして、ｗｅｂｉｆｉｅｒは、訪問者が制約されたサブ設計者であることを可能にし得る。
【０３７４】
例示的なユースケースのシナリオ
例示的なユースケースによれば、設計者は、ｗｅｂｉｆｉｅｒ  Ａｄｄ−Ｏｎが既にインストールされている、Ｗｉｎｄｏｗｓデスクトップバージョンのスプレッドシートアプリケーション、例えば、ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬを開き得る。Ａｄｄ−Ｏｎは、スプレッドシートアプリケーションに埋め込まれたメインＡｄｄ−Ｏｎユーザインターフェースとして“Ｓｉｄｅｂａｒ”を含み得る。設計者は、ログインすることを要求され得る（図１３）。ログインの成功は、設計者を、以前に作成したｗｅｂ−ａｐｐのリストを有する図１２へ連れていく。設計者は、スプレッドシートアプリケーションにより利用可能な普通の方法で新しいスプレッドシートファイルを作成し、次いで、図１２で見られるようにアップロード矢印（サーバへのアップロード）をクリックし得る。設計者は、ａｐｐの名前を設定し（図２３）、ほぼ空のスプレッドシート（この例では）がサーバに送信され、ほぼ空のｗｅｂ−ａｐｐとなる。設計者は、次に、図１８上のページの空リストを見て、図６９のメニューを見るべくｗｅｂ−ａｐｐアクションメニュー上をクリックする、または図５５のメニューを見るべくｗｅｂ−ａｐｐ  タブのアクションメニュー上をクリックする。ユーザは、該メニューからの追加ページをクリックし、図５１のようなフォームへ進み、これは、ページ“Ｔｉｔｌｅ”などのすべてのページタイプに共通のプロパティを表示してよく、また、所望のデスティネーションページタイプを選ぶべくドロップダウンを表示してよい。設計者は、次に、設計者のページタイプの選択に応じて、図２６の（ＡＰＩ）、２７（Ｃａｌｅｎｄａｒ）、２９（Ｃｏｎｔａｉｎｅｒ）、３３（ＣＳＶ  Ｉｍｐｏｒｔ）、３５（Ｄｅｔａｉｌｓ  Ｒｅｐｏｒｔ）、３８（Ｅｄｉｔ−Ｃｅｌｌｓ）、４１（Ｅｄｉｔ−Ｒｅｃｏｒｄ）、４３（Ｉｎｓｅｒｔ）、４５（Ｌｉｎｋ）、４６（ＰＤＦ）、４７（Ｒｅｐｏｒｔ）、４９（Ｔａｂｓ  Ｃｏｎｔａｉｎｅｒ）に似ていてよい、ページタイプ設定および構成を定義することを要求する主としてブランクのフォームを見ることになる。設計者は、それぞれ本明細書で説明される１つまたは複数の特徴を組み込んでいるページを必要なだけ作成するべくこのプロセスを繰り返し得る。
【０３７５】
前述のどの特徴も、本発明の任意の特定の態様または実施形態と共に用いられ得る。上記の態様および実施形態の特徴の多くの組み合わせ、修正、または変更が、当業者にはすぐに分かるであろうし、それらは本発明の一部をなすことを意図されている。一実施形態または例に関係して具体的に説明した特徴のいずれも、あらゆる他の実施形態または例で用いられ得る。加えて、主題が、構造上の特色および／または方法論的行為に特異的な言語で説明されているが、付属の請求項で定義される主題は、前述の具体的な特徴または行為に必ずしも限定されないことが理解される。例えば、具体的なソフトウェアアプリケーション、式、および関数名の使用は、請求項がこのような特異性を列挙しない限り、用いることができる代替的なアプリケーション、式、および／または関数名を限定するものとなることを意図されない。むしろ、前述の具体的な特徴および行為は、請求項を実装する例示的なフォームとして開示される。
【図１】
2021505998.tif 000003
【図２】
2021505998.tif 000004
【図３Ａ】
2021505998.tif 000005
【図３Ｂ】
2021505998.tif 000006
【図４】
2021505998.tif 000007
【図５】
2021505998.tif 000008
【図６】
2021505998.tif 000009
【図７】
2021505998.tif 000010
【図８】
2021505998.tif 000011
【図９】
2021505998.tif 000012
【図１０】
2021505998.tif 000013
【図１１】
2021505998.tif 000014
【図１２】
2021505998.tif 000015
【図１３】
2021505998.tif 000016
【図１４】
2021505998.tif 000017
【図１５】
2021505998.tif 000018
【図１６】
2021505998.tif 000019
【図１７】
2021505998.tif 000020
【図１８】
2021505998.tif 000021
【図１９】
2021505998.tif 000022
【図２０】
2021505998.tif 000023
【図２１】
2021505998.tif 000024
【図２２】
2021505998.tif 000025
【図２３】
2021505998.tif 000026
【図２４】
2021505998.tif 000027
【図２５】
2021505998.tif 000028
【図２６】
2021505998.tif 000029
【図２７】
2021505998.tif 000030
【図２８】
2021505998.tif 000031
【図２９】
2021505998.tif 000032
【図３０】
2021505998.tif 000033
【図３１】
2021505998.tif 000034
【図３２】
2021505998.tif 000035
【図３３】
2021505998.tif 000036
【図３４】
2021505998.tif 000037
【図３５】
2021505998.tif 000038
【図３６】
2021505998.tif 000039
【図３７】
2021505998.tif 000040
【図３８】
2021505998.tif 000041
【図３９】
2021505998.tif 000042
【図４０】
2021505998.tif 000043
【図４１】
2021505998.tif 000044
【図４２】
2021505998.tif 000045
【図４３】
2021505998.tif 000046
【図４４】
2021505998.tif 000047
【図４５】
2021505998.tif 000048
【図４６】
2021505998.tif 000049
【図４７】
2021505998.tif 000050
【図４８】
2021505998.tif 000051
【図４９】
2021505998.tif 000052
【図５０】
2021505998.tif 000053
【図５１】
2021505998.tif 000054
【図５２】
2021505998.tif 000055
【図５３】
2021505998.tif 000056
【図５４】
2021505998.tif 000057
【図５５】
2021505998.tif 000058
【図５６】
2021505998.tif 000059
【図５７】
2021505998.tif 000060
【図５８】
2021505998.tif 000061
【図５９】
2021505998.tif 000062
【図６０】
2021505998.tif 000063
【図６１】
2021505998.tif 000064
【図６２】
2021505998.tif 000065
【図６３】
2021505998.tif 000066
【図６４】
2021505998.tif 000067
【図６５】
2021505998.tif 000068
【図６６】
2021505998.tif 000069
【図６７】
2021505998.tif 000070
【図６８】
2021505998.tif 000071
【図６９】
2021505998.tif 000072
【図７０】
2021505998.tif 000073
【図７１】
2021505998.tif 000074
【図７２】
2021505998.tif 000075
【図７３】
2021505998.tif 000076
【図７４】
2021505998.tif 000077
【図７５】
2021505998.tif 000078
【図７６】
2021505998.tif 000079
【図７７】
2021505998.tif 000080
【図７８】
2021505998.tif 000081
【図７９】
2021505998.tif 000082
【図８０】
2021505998.tif 000083
【図８１】
2021505998.tif 000084
【図８２】
2021505998.tif 000085
【図８３】
2021505998.tif 000086
【図８４】
2021505998.tif 000087
【図８５】
2021505998.tif 000088
【図８６】
2021505998.tif 000089
【図８７】
2021505998.tif 000090
【図８８】
2021505998.tif 000091
【図８９】
2021505998.tif 000092
【図９０】
2021505998.tif 000093
【図９１】
2021505998.tif 000094
【図９２】
2021505998.tif 000095
【図９３】
2021505998.tif 000096
【図９４】
2021505998.tif 000097
【図９５】
2021505998.tif 000098
【図９６】
2021505998.tif 000099
【図９７】
2021505998.tif 000100
【図９８】
2021505998.tif 000101
【手続補正書】
【提出日】令和2年7月8日(2020.7.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのウェブページを備える対話型ウェブアプリケーションを生成するためのコンピュータ実装方法であって、
スプレッドシート内の少なくとも１つの一次データソースを決定することであって、前記少なくとも１つの一次データソースが、前記スプレッドシートの第１のワークシートに対応する、決定することと、
前記スプレッドシート内の少なくとも１つの二次データソースを決定することであって、前記少なくとも１つの二次データソースが異なる第２のワークシートに対応する、決定することと、
前記一次データソースのレコードと前記二次データソースのレコードとの間の関係を決定することと、
前記決定された関係に基づいて、前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部を備える第３のワークシートを自動的に生成することであって、前記第３のワークシートのコンテンツは、前記第１のワークシートのコンテンツおよび前記第２のワークシートのコンテンツと同期され、前記第３のワークシートの第１の行は、前記決定された関係に基づいて、前記一次データソースから選択される少なくとも１つの第１のセルおよび前記二次データソースから選択される少なくとも１つの異なる第２のセルを備える、生成することと、
特定のウェブページに対応し、かつ前記スプレッドシート内に格納される少なくとも１つのユーザインターフェース・テンプレートに基づいて前記対話型ウェブアプリケーションの前記特定のウェブページを生成することであって、前記特定のウェブページが前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートに基づいて識別される前記第３のワークシートのレコードを参照し、前記対話型ウェブアプリケーションの前記特定のウェブページを生成することが、前記スプレッドシートから前記第３のワークシートの前記レコードに対応するコンテンツを抽出することを含み、前記第３のワークシートの前記レコードに対応する前記コンテンツが、前記特定のウェブページに対応する前記少なくとも１つのユーザインターフェース・テンプレートによって識別される、生成することと、
前記対話型ウェブアプリケーションの前記特定のウェブページに関連する入力制御を介して、前記第３のワークシートのレコードに対応するユーザ入力を受信することと、
前記受信したユーザ入力に基づき、かつ前記決定された関係に基づいて、前記第３のワークシートの前記レコードに対応する前記二次データソースの少なくとも１つのレコードを更新することと、を含む、方法。
【請求項２】
前記第３のワークシートが、前記一次データソースの前記レコードおよび前記二次データソースの前記レコードの間接的なビューを含む、請求項１に記載の方法。
【請求項３】
前記スプレッドシート内の第１のユーザインターフェース・テンプレートを決定することであって、前記第１のユーザインターフェース・テンプレートが、前記一次データソースおよび前記二次データソースを識別する、決定すること、をさらに含み、
前記一次データソースの前記レコードの少なくとも一部および前記二次データソースの前記レコードの少なくとも一部を備える前記第３のワークシートを生成することが前記第１のユーザインターフェース・テンプレートを決定することに応答して実行される、請求項１または請求項２に記載の方法。
【請求項４】
前記一次データソースまたは前記二次データソースのコンテンツが変更されたことを判定することに応答して、前記第３のワークシートの前記対応するコンテンツを更新することをさらに含む、請求項１〜請求項３のいずれか１項に記載の方法。
【請求項５】
前記第３のワークシートのコンテンツが変更されたことを判定することに応答して、前記第１のワークシートまたは前記第２のワークシートの対応するコンテンツを更新することをさらに含む、請求項１〜請求項４のいずれか１項に記載の方法。
【請求項６】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係の表示を含む第２のユーザ入力を受信することを含む、請求項１〜請求項５のいずれか１項に記載の方法。
【請求項７】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記第１のワークシートおよび前記第２のワークシートの１つまたは複数の特徴に基づいて、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を自動的に検出することを含む、請求項１〜請求項５のいずれか１項に記載の方法。
【請求項８】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
前記少なくとも１つのユーザインターフェース・テンプレートの１つまたは複数の特徴に基づいて、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を自動的に検出することを含む、請求項１〜請求項５のいずれか１項に記載のシステム。
【請求項９】
前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の前記関係を決定することが、
１つまたは複数の手がかりに基づいて、自動的に、前記一次データソースの前記レコードと前記二次データソースの前記レコードとの間の潜在的な関係を決定することと、
前記決定された潜在的関係の信頼性レベルを決定することと、
前記決定された信頼性レベルに基づいて前記決定された潜在的関係を受け入れるか、または拒否することと、を含む、請求項１〜請求項５のいずれか１項に記載の方法。
【請求項１０】
前記関係を決定することが、前記一次データソースの前記レコードおよび前記二次データソースの前記レコードのレコード構造に基づいている、請求項１〜請求項５のいずれか１項に記載の方法。
【請求項１１】
前記関係を決定することが、前記一次データソースの前記レコードの第１の列および前記第２のデータソースの前記レコードの第２の列の共通のコンテンツに基づいている、請求項１〜請求項５のいずれか１項に記載の方法。
【請求項１２】
前記第３のワークシートの少なくとも１つの第１のレコードのフォーマットが変更されたことを判定することに応答して、前記第１のワークシートまたは前記第２のワークシートの対応する第２のレコードのフォーマットを更新すること、または
前記第１のワークシートまたは前記第２のワークシートの少なくとも１つの第１のレコードのフォーマットが変更されたことを判定することに応答して、前記第３のワークシートの対応する第２のレコードのフォーマットを更新すること、をさらに含む、請求項１〜請求項１１のいずれか１項に記載の方法。
【請求項１３】
前記スプレッドシート内の少なくとも１つの三次データソースを決定することであって、前記少なくとも１つの三次データソースが、前記スプレッドシートの異なる第４のワークシートに対応する、決定することと、
前記第３のワークシートの前記レコードと前記三次データソースのレコードとの間の第２の関係を決定することと、
前記決定された第２の関係に基づいて、前記第３のワークシートの前記レコードの少なくとも一部および前記三次データソースの前記レコードの少なくとも一部を備える第５のワークシートを自動的に生成することであって、前記第５のワークシートのコンテンツが、前記第１のワークシートのコンテンツ、前記第２のワークシートのコンテンツ、および前記第４のワークシートのコンテンツと同期される、生成することと、をさらに含む、請求項１〜請求項１２のいずれか１項に記載の方法。
【請求項１４】
請求項１〜請求項１３のいずれか１項に記載の方法を実行するよう構成されるコンピューティングデバイス。
【請求項１５】
１つまたは複数のプロセッサによって実行されるときに、請求項１〜請求項１３のいずれか１項に記載の方法のパフォーマンスを生じさせる命令を格納するコンピュータ可読媒体。
【国際調査報告】
2021505998.tif 000102
2021505998.tif 000103
2021505998.tif 000104
2021505998.tif 000105