(57)【要約】  スタンドアローンスプレッドシートアプリケーションおよび／またはウェブベースのスプレッドシートサービスに関して、スプレッドシート文書のパラメータを指定し、発見し、セットする機能を提供する。スプレッドシート文書を作成する時に、ある種のセルまたはセルの範囲をスプレッドシートに対するパラメータとして指定する能力が使用可能となる。さらに、スタンドアローンスプレッドシートアプリケーションとして閲覧される場合であれ、ウェブサービスを介して閲覧される場合であれ、ユーザインターフェースまたはオブジェクトモデルを介してこれらのパラメータを発見する機能が提供される。一時に１つまたはバルクでこれらのパラメータをセットし、または変更し、その変更を計算モデルに追い込む機能も、提供される。したがって、スタンドアローンスプレッドシートアプリケーション内でまたはウェブレンダリングサービスを介してのどちらで閲覧される場合であっても、ユーザによって入力されたパラメータの影響を、すぐに計算し、閲覧することができる。パラメータの現在のセットなど、すべての関連する値が入手されるまで、ワークブックの再計算を保留する機能も、使用可能となる。
2009508237.tif 000002
【特許請求の範囲】
【請求項１】
モデルを表すスプレッドシート文書の少なくとも１つのセルをパラメータとして指定する方法であって、前記方法は、コンピューティングシステムの少なくとも１つのプロセッサによって実行可能であり、
スプレッドシート文書オーサリングソフトウェアに関連するユーザインターフェースコンポーネントを介して、前記スプレッドシート文書によって表される複数のセルのうちの少なくとも１つのセルを前記モデルの編集可能パラメータとして指定するステップ
を含むことを特徴とする方法。
【請求項２】
前記指定に従って指定されないセルはいずれも、編集可能ではないことを特徴とする請求項１に記載の方法。
【請求項３】
前記指定に従って指定される前記少なくとも１つのセルを表す情報を含むパラメータ情報を前記スプレッドシート文書と共に格納するステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記スプレッドシート文書と共に格納された前記パラメータ情報を要求するステップ
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記ユーザインターフェースコンポーネントを介して、前記パラメータ情報をパラメータのリストとして表示するステップ
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
パラメータのリストとしての前記パラメータ情報の前記表示するステップは、パラメータ名のリストおよびユーザインターフェースコントロールを表示するステップを含み、これによって各パラメータ名は、前記パラメータ名によって表される前記スプレッドシート文書のセルに関連する値を編集する入力を受け取るためのユーザインターフェースコントロールを含むことを特徴とする請求項５に記載の方法。
【請求項７】
請求項１に記載の方法を実行する手段を含むことを特徴とするコンピューティングデバイス。
【請求項８】
スプレッドシート文書によって表されるモデルに関連するパラメータのリストを発見する方法であって、前記方法は、コンピューティングシステムの少なくとも１つのプロセッサによって実行可能であり、
前記スプレッドシート文書によって表される前記モデルに関連する前記パラメータのリストを取り出すステップであって、各パラメータは前記スプレッドシート文書のセルに対応し、前記パラメータのリストのパラメータに関連する前記スプレッドシート文書のセルは編集可能となっている、取り出すステップ
を含むことを特徴とする方法。
【請求項９】
前記パラメータのリストのパラメータに関連しない前記スプレッドシート文書のセルはいずれも、編集可能ではないことを特徴とする請求項８に記載の方法。
【請求項１０】
前記取り出すステップは、アプリケーションプログラミングインターフェースを介して前記パラメータのリストを発見するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記取り出すステップはさらに、前記パラメータのリストが関連する前記スプレッドシート文書にほぼ隣接して表示されるユーザインターフェース要素を介して前記パラメータのリストを表示するステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１２】
前記ユーザインターフェース要素は、タスクペインであることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記取り出すステップは、ユーザインターフェースコンポーネントを介して前記パラメータのリストを要求するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１４】
前記要求するステップは、前記ユーザインターフェースコンポーネントの少なくとも１つのメニューコマンドを介して前記パラメータのリストの前記表示を要求することを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記取り出すステップは、前記パラメータのリストをパラメータ名のリストおよびユーザインターフェースコントロールとして表示するステップを含み、各パラメータ名は、前記パラメータ名によって表される前記スプレッドシート文書のセルに関連する値を編集する入力を受け取る少なくとも１つのユーザインターフェースコントロールに関連することを特徴とする請求項８に記載の方法。
【請求項１６】
請求項８に記載の方法を実行する手段を含むことを特徴とするコンピューティングデバイス。
【請求項１７】
スプレッドシート文書によって表されるモデルに関連するパラメータのリストのパラメータを編集する方法であって、前記方法は、コンピューティングシステムの少なくとも１つのプロセッサによって実行可能であり、
ユーザインターフェースコンポーネントを介して、前記スプレッドシート文書によって表される前記モデルに関連する前記パラメータのリストの少なくとも１つのパラメータを編集するステップであって、各パラメータは前記スプレッドシート文書のセルに対応し、前記パラメータのリストのパラメータに関連する前記スプレッドシート文書のセルは編集可能となっている、編集するステップ
を含むことを特徴とする方法。
【請求項１８】
前記モデルに関連するすべての情報が、前記モデルに関連する最新の情報を自動的に入手することまたは前記編集するステップを介してユーザから前記最新の情報を受け取ることのうちの少なくとも１つによって最新にされるまで、前記モデルの計算を保留するステップ
をさらに含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記保留するステップは、前記モデルに関連するすべての情報が、前記モデルに関連する最新の情報を自動的に入手することまたは前記編集するステップを介してユーザから最新の情報を受け取ることのうちの少なくとも１つによって最新にされるまで、完全なスプレッドシート文書の表示を保留するステップをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
請求項１７に記載の方法を実行する手段を含むことを特徴とするコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スプレッドシートまたはワークブックなどの文書のパラメータの指定、セッティング、および発見に関する。
【背景技術】
【０００２】
ＭＩＣＲＯＳＯＦＴ社のＥＸＣＥＬソフトウェアなどのスプレッドシートソフトウェアは、数の列が、予算、プラン、モデル、および他のタスクについて、たとえば合計され、乗算されるなど、数学的に操作される、ワークシートまたはワークブックとも時折呼ばれる紙のスプレッドシートをまねるように動作する。通常、スプレッドシートソフトウェアユーザインターフェースは、スクリーン上で行および列のマトリックスとして表示され、その交点は「セル」と呼ばれる。セルには、ラベル、数値、または式を記入することができる。ラベルは、「Ｒｅｎｔ（レンタル料）」および「Ｇｒｏｓｓ  Ｓａｌｅｓ（総売上）」などの説明テキストである。値は、実際の数値データであり、式は、スプレッドシートに、値に基づいて特定の計算を実行するように指令し、たとえば、式ＳＵＭ  ＣＥＬＬＳ  Ａ５  ＴＯ  Ａ１０は、スプレッドシートソフトウェアに、列Ａの行５から１０までのセルを合計させることができる。式は、セルの相互関係を可能にし、作成が簡単である。たとえば、単にセルをポイントし、クリックし、次に、そのセルに影響する予定の任意の算術演算のキー（＋、−など）を押すことができる。たとえば、式の作成は、「このセルの内容＋このセルの内容／左側の次のセルの内容」とすることができる。
【０００３】
数が追加されるか変更された後に、式は、自動的にまたはたとえばキーの押下げによるユーザの開始指示時に、一般にデータを再計算する。これは、複数のセル全体を通じた再計算「リップル(ripple)」効果を生じる可能性がある。任意のセルの内容を、任意の他のセルを用いて計算するか、任意の他のセルにコピーすることができるので、１つの列の総計を、別の列の詳細アイテムとして使用することができる。たとえば、支出アイテムの列からの総計を、すべての支出を示す要約列に持ち越すことができる。詳細列の１つのセルの内容が変化する場合に、その列総計が変化し、これが要約列にコピーされ、要約総計が変化する。
【０００４】
銀行家、株式仲買人、エコノミストなどにとって強力なツールであるそのようなリップル効果は、ユーザが、プランまたはモデルを作成し、そのモデルに関する異なる仮定を入力し、すなわちパラメータ（もしこうなら？）」機能は、スプレッドシートを予算、プラン、および他の式ベースのタスクに欠くことのできないものにする。したがって、「ｗｈａｔ  ｉｆ？」機能は、ユーザが、経時的な銀行口座の価値増加など、数学モデルの、利率などの基礎になるパラメータを変更することを可能にする。「ｗｈａｔ  ｉｆ？」は、同様に、ユーザが、最初の銀行口座残高などの基礎になる事実、利子を複利にする式を伴うまたは伴わない利子の計算など、セルを相互に関係付ける式、および異なる数学的シナリオに対処するためにセルの名前さえ、変更することを可能にする。
【０００５】
したがって、現在、スプレッドシートのセルに関するすべての情報を、ユーザによって変更することができ、その結果、ユーザは、代替案が全体的モデルでどのように動作するかを知ることができるようになる。しかし、実際には、一般に、モデルがセットアップされたならば、そのモデルのある種の態様は、変更を対象としない。たとえば、ユーザが、上で説明した価値増加の例で、始めの銀行口座残高が２０００ドルであり、その事実が変化しないことを知っている場合がある。したがって、そのような事実を変更できることは、スプレッドシートの不必要な機能であると思われる。同様に、スプレッドシート内のラベルを有するセルは、変更可能であるが、増加式計算の結果を変更しない、すなわち、ある列または値に「増加率」または「利率」のどちらのラベルが付けられているかは、基礎になる式に関係しない。したがって、現在のスプレッドシートモデルの下で、異なる仮定の下での微調整のためのパラメータとして意図されたセルと、変更不能な固定物として意図されたセルすなわちモデルの所与の部分との間で区別することは、むずかしいと思われる。
【０００６】
これは、問題のスプレッドシートの作成者にとっては大体問題がない。というのは、作成者は、一般に、どの関連するパラメータが微調整用であるかを覚えているからである。しかし、その作成に関係しない第三者のユーザが、スプレッドシートおよびそれが表すモデルを見るや否や、その第三者のユーザは、どのセルがパラメータとして意図され、どのセルがそうでないかを確かめるというむずかしい課題を経験しなければならなくなる。そのような第三者のユーザは、たとえば、２０００ドルの最初の残高が、モデルの所与の部分であることを知らない場合がある。さらに、数学的モデルが、本明細書で与えた増加の例より自明でなくなるにつれて、モデルの作成者でさえ、文書のどの部分がパラメータであり、どの部分がそうでないかを記憶するのに困難を感じる場合がある。
【０００７】
したがって、現在、スプレッドシートのユーザは、スプレッドシートのセルをパラメータとして明示的に指定することができない。類似する理由から、ユーザは、スプレッドシートのどの部分がパラメータであるかを発見することができない。さらに、類似する理由から、ユーザは、パラメータを、パラメータとしてすなわち、モデルのうちでパラメータでない部分から区別して、変更しまたはセットすることができない。説明されたスプレッドシート文書のパラメータに関連するこれらの不足は、当技術分野で未対処のままである。
【０００８】
さらに、歴史的にスプレッドシートはスタンドアローンのアプリケーションであり、ユーザはローカルコンピュータにインストールされたスプレッドシートソフトウェアを実行するプロセッサを有するローカルコンピュータと同一位置にいた。上で説明したシナリオのいずれについても、そうである可能性はある。
【０００９】
しかし、インターネットの出現および急成長に伴って、コンピュータユーザは、ほぼ任意の位置からほぼすべての種類の電子文書に便利にアクセスすることに慣れてきた。具体的に言うと、ワールドワイドウェブ（「ウェブ」）およびウェブブラウザアプリケーションプログラムの増殖が、テキスト文書およびグラフィックス文書などの多数の種類の文書へのアクセスを非常に便利にした。ウェブブラウザアプリケーションプログラムを介して、ユーザは、追加ソフトウェアを一切必要とせずに、スプレッドシート文書を含む多数のタイプの電子文書にアクセスし、これらを見ることができる。
【００１０】
したがって、たとえば、ユーザは、ローカルマシンでスプレッドシート文書を作成し、そのスプレッドシート文書をサーバに「パブリッシュ」することができ、そのサーバから、すべての許可されたユーザが、そのスプレッドシート文書を、ウェブブラウザを介して見ることができる。ウェブブラウザ内でレンダリングされる時に、スプレッドシートは、スプレッドシートアプリケーションプログラムによって表示される時のスプレッドシートに実質的に似た形で表示される。しかし、現在、上で説明したクライアントアプリケーションの不足に似て、ユーザはやはり、ウェブブラウザで表示されるスプレッドシート文書を作成する時に任意のセルをパラメータとして指定することができない。類似する理由から、ユーザは、どのパラメータがスプレッドシートに適用されるかを発見できず、これらのパラメータをセットしまたは変更することができない。
【００１１】
したがって、現在、ユーザが、スプレッドシート内のモデルをロックダウンし、ある種のセルだけを編集可能にすることは、不可能である。これらのセルは実質上、変更できる「関数」パラメータである。スプレッドシートモデルは、１つまたは複数の関数を表す。現在、スプレッドシートをロックダウンし、ある種のセルだけを編集可能にする形があるが、これは、あるセルをスプレッドシートに対するパラメータとして明示的に指定する機構またはその機構にセルの移動およびワークブック変更を追跡させる機構がない、ユーザインターフェース（ＵＩ）駆動ロックダウンである。セルをパラメータとして指定する形がないので、スプレッドシートに対する使用可能パラメータについて照会するためにスプレッドシートを呼び出す形もない。さらに、既存スプレッドシートサーバ製品の場合に、セルを編集することは、まだ全く可能ではない。本明細書で説明するスプレッドシート機能性の上記および他の問題は、当技術分野で未対処の問題を残している。
【発明の開示】
【課題を解決するための手段】
【００１２】
前述を考慮して、スタンドアローンスプレッドシートアプリケーションおよび／またはウェブベースのスプレッドシートサービスに関して、本発明は、スプレッドシート文書のパラメータを指定し、発見し、セットする機能を提供する。さまざまな非限定的実施形態で、スプレッドシート文書を作成する時に、本発明は、スプレッドシートに対するパラメータとしてある種のセルまたはセルの範囲を指定する機能を提供する。さらに、スタンドアローンスプレッドシートアプリケーション内またはウェブサービスを介してのどちらで見られる場合であっても、本発明は、ユーザインターフェースまたはオブジェクトモデルを介してこれらのパラメータを発見する機能を提供する。さらに、これらのパラメータを一時に１つずつまたはバルクでセットしまたは変更し、その変更を計算モデルに追い込む機能をも提供する。したがって、スタンドアローンスプレッドシートアプリケーション内またはウェブサービスを介してのどちらで見られる場合であっても、ユーザによって入力されたパラメータの影響を、すぐに計算し、見ることができる。本発明は、パラメータなどのすべての関連する値が入手されるまで、ワークブックの再計算を保留する機能をもサポートする。
【００１３】
本発明の他の特徴は、下で説明される。
【００１４】
本発明によるスプレッドシート文書のパラメータの指定、発見、およびセッティングを、添付図面を参照してさらに説明する。
【発明を実施するための最良の形態】
【００１５】
概要
上で述べたように、スタンドアローンスプレッドシートアプリケーションまたはウェブサーバスプレッドシートサービスのどちらに基づく場合であっても、現在、ユーザがスプレッドシート内のモデルをロックダウンし、パラメータを表すセルだけを編集可能にすることは、不可能である。スタンドアローンスプレッドシートアプリケーションを用いると、スプレッドシートをロックダウンし、ある種のセルだけを編集可能にする形があるが、そのような機能性は、パラメータとして指定されたパラメータを顧慮しないＵＩ駆動である。スプレッドシートに対する使用可能パラメータについて照会するためにスプレッドシートを呼び出す形もない。さらに、スプレッドシート文書のレンダリングを可能にするウェブベースのスプレッドシートサーバの場合に、セルを編集することは、まだ全く可能ではない。したがって、本発明は、設計時にパラメータとしてスプレッドシートのある種のセルを指定し、その結果、文書がスタンドアローンアプリケーションまたはウェブベースのスプレッドシートサービスのいずれを介して見られる時でも、それぞれクライアントまたはサーバが、どのセルがパラメータであるかを発見でき、代替ＵＩまたはオブジェクトモデル（ＯＭ）を提供でき、パラメータとして特に指定されたセルの値を編集できるようにする機能を提供する。
【００１６】
例示的なネットワーク化された環境および分散環境
これから図面を参照して、本発明のさまざまな態様を説明するが、図面では、類似する符号が類似する要素を表す。具体的に言うと、図１および対応する議論は、本発明の実施形態を実施できる適切なコンピューティング環境の短い全般的な説明を提供することを意図されたものである。本発明を、サーバおよびパーソナルコンピュータシステムで実行されるプログラムモジュールの全般的な文脈で説明するが、当業者は、本発明を他のタイプのコンピュータシステムおよびプログラムモジュールと組み合わせて実施することもできることを了解するであろう。
【００１７】
一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実施する、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに、当業者は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルなコンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む他のコンピュータシステム構成と共に本発明を実践できることを了解するであろう。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルメモリストレージデバイスとリモートメモリストレージデバイスとの両方に配置することができる。
【００１８】
ここで図１を参照して、本発明のさまざまな実施形態で利用されるコンピュータ２の例示的なコンピュータアーキテクチャを説明する。図１に示されたコンピュータアーキテクチャは、中央処理装置５（「ＣＰＵ」）と、ランダムアクセスメモリ９（「ＲＡＭ」）および読取専用メモリ（「ＲＯＭ」）１１を含むシステムメモリ７と、メモリをＣＰＵ  ５に結合するシステムバス１２とを含む、通常のデスクトップコンピュータまたはラップトップコンピュータを示す。スタートアップ中などにコンピュータ内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システムが、ＲＯＭ  １１に格納される。コンピュータ２は、さらに、オペレーティングシステム１６、アプリケーションプログラム、および他のプログラムモジュールを格納するマスストレージデバイス１４を含み、これらのプログラムは、下でより詳細に説明する。
【００１９】
マスストレージデバイス１４は、バス１２に接続されたマスストレージコントローラ（図示せず）を介してＣＰＵ  ５に接続される。マスストレージデバイス１４およびそれに関連するコンピュータ可読媒体は、コンピュータ２の不揮発性ストレージを提供する。本明細書に含まれるコンピュータ可読媒体の説明は、ハードディスクまたはＣＤ−ＲＯＭドライブなどのマスストレージデバイスに言及するが、当業者は、コンピュータ可読媒体をコンピュータ２によってアクセスできる任意の使用可能な媒体とすることができることを了解するに違いない。
【００２０】
限定ではなく例として、コンピュータ可読媒体は、コンピュータストレージ媒体および通信媒体を含むことができる。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージの任意の方法またはテクノロジで実施された、揮発性および不揮発性の、リムーバブルおよびノンリムーバブルの媒体を含む。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のソリッドステートメモリテクノロジ、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（「ＤＶＤ」）、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは、所望の情報を格納するのに使用でき、コンピュータ２によってアクセスできる任意の他の媒体を含むが、これらに限定はされない。
【００２１】
本発明のさまざまな実施形態によれば、コンピュータ２は、インターネットなどのネットワーク１８を介するリモートコンピュータへの論理接続を使用することによって、ネットワーク化された環境で動作することができる。コンピュータ２は、バス１２に接続されたネットワークインターフェースユニット２０を介してネットワーク１８に接続することができる。ネットワークインターフェースユニット２０を利用して、他のタイプのネットワークおよびリモートコンピュータシステムに接続することもできることを了解されたい。コンピュータ２は、キーボード、マウス、または電子スタイラス（図１には図示せず）を含む複数の他のデバイスから入力を受け取り、処理する入出力コントローラ２２をも含むことができる。同様に、入出力コントローラ２２は、ディスプレイスクリーン、プリンタ、または他のタイプの出力デバイスに出力を供給することができる。
【００２２】
上で短く述べたように、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適切なオペレーティングシステム１６を含む複数のプログラムモジュールおよびデータファイルを、コンピュータ２のマスストレージデバイス１４およびＲＡＭ  ９に格納することができる。マスストレージデバイス１４およびＲＡＭ  ９は、１つまたは複数のプログラムモジュールを格納することもできる。具体的に言うと、マスストレージデバイス１４およびＲＡＭ  ９は、ウェブブラウザアプリケーションプログラム１０を格納することができる。当業者に既知の通り、ウェブブラウザアプリケーションプログラム１０は、ＨＴＭＬを使用してフォーマットされたウェブページ２４などの電子文書を要求し、受信し、レンダリングし、これとの対話機能を提供するように動作する。さらに、ウェブブラウザアプリケーションプログラム１０は、ＳＵＮ  ＭＩＣＲＯＳＹＳＴＥＭＳ，ＩＮＣ．社のＪＡＶＡ（登録商標）  ＳＣＲＩＰＴ言語を利用して表現されたスクリプトなど、ウェブページ２４に含まれるスクリプトを実行するように動作することができる。本発明の一実施形態によれば、ウェブブラウザアプリケーションプログラム１０は、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ社のＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲウェブブラウザアプリケーションプログラムを含む。しかし、ＭＯＺＩＬＬＡ  ＦＯＵＮＤＡＴＩＯＮのＦＩＲＥＦＯＸウェブブラウザアプリケーションなど、他の製造業者からの他のウェブブラウザアプリケーションプログラムを利用して、本発明のさまざまな態様を実施できることを了解されたい。
【００２３】
下でより詳細に説明するように、ウェブページ２４は、スプレッドシート文書の表示可能表現を含むことができる。具体的に言うと、ウェブページ２４は、ウェブブラウザアプリケーション１０によって表示された時にスプレッドシートのビジュアルディスプレイを提供するＨＴＭＬおよびスクリプトを含むことができる。さらに、ウェブページ２４に含まれるスクリプトは、コンピュータのユーザが、ウェブブラウザアプリケーション１０によって提供されるディスプレイと対話し、スプレッドシートを変更することを可能にする。ウェブブラウザアプリケーション１０によって提供されるビジュアルディスプレイから、ユーザは、ネイティブスプレッドシートファイルをスプレッドシートアプリケーションプログラム２６内で開くことを要求することを許可されることもできる。そのような要求に応答して、スプレッドシートアプリケーション２６が、起動され、ウェブページ２４によって表現されるスプレッドシートに対応するネイティブスプレッドシートファイルが、スプレッドシートアプリケーションプログラム２６によってロードされる。スプレッドシートアプリケーションプログラム２６は、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ社のＥＸＣＥＬスプレッドシートアプリケーションプログラムまたは別の製造業者の別のスプレッドシートアプリケーションプログラムを含むことができる。ウェブブラウザアプリケーション１０のコンテキスト内からスプレッドシートを見、これと対話するためのプロセスに関する追加の詳細を、これから図２に関して提供する。
【００２４】
これから図２を参照して、本発明のさまざまな実施形態の動作環境を示すネットワークアーキテクチャ図を説明する。図２に示されているように、コンピュータ２は、ネットワーク１８に接続される。ネットワーク１８には、アプリケーションサーバ３０も接続される。アプリケーションサーバ３０は、図１に関して上で説明した従来のコンピューティングコンポーネントの一部またはすべてを含むことができるサーバコンピュータを含む。さらに、アプリケーションサーバ３０は、アプリケーションサーバ３０に格納されるかアプリケーションサーバ３０からアクセス可能な文書に関する要求を受信し、これに応答するウェブサーバアプリケーションを実行するように動作可能である。さらに、アプリケーションサーバ３０は、ウェブアプリケーション３４によって生成されたページに関する要求を受信し、これに応答するように動作可能である。ウェブアプリケーション３４が、アプリケーションサーバ３０で実行可能なコード、他のコンピュータと通信する実行可能コードを含むことができ、テンプレート、グラフィックス、オーディオファイル、および当業者に既知の他の内容を含むことができることを了解されたい。
【００２５】
本発明の一態様によれば、ウェブアプリケーション３４は、ネットワーク１８を介してアクセス可能なスプレッドシートまたはワークブックと対話するためのインターフェースをコンピュータ２のユーザに提供するように動作可能である。具体的に言うと、ウェブアプリケーション３４は、サーバアプリケーションプログラミングインターフェース（「ＡＰＩ」）３８を利用する。本発明のこの実施形態によれば、サーバＡＰＩ  ３８は、スプレッドシート計算サーバ３２との通信を可能にするように動作可能である。スプレッドシート計算サーバ３２は、スプレッドシート計算サーバプログラム４０を実行するように動作可能である。スプレッドシート計算サーバプログラム４０は、データベース４２に格納されたワークブック４４などのスプレッドシートを取り出し、計算する実行可能プログラムを含む。本明細書で説明する本発明の実施形態では、スプレッドシート計算サーバプログラム４０が、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ社のＥＸＣＥＬ  ＣＡＬＣＵＬＡＴＩＯＮ  ＳＥＲＶＥＲプログラムなどの計算サーバ（本明細書の他所では省略して「ＣＳ」）を含むことを了解されたい。しかし、サーバコンピュータ上でスプレッドシートを計算する他のプログラムを利用することができる。計算サーバ３２が、図１に関して上で述べた従来のハードウェアコンポーネントおよびソフトウェアコンポーネントの多数を含むことができることをも了解されたい。
【００２６】
下でより詳細に述べるように、コンピュータ２は、ウェブブラウザアプリケーション１０のコンテキスト内でワークブック４４を見るために、要求をアプリケーションサーバ３０に送信することができる。そのような要求に応答して、ウェブアプリケーション３４は、サーバＡＰＩ  ３８を介して計算サーバ３２と通信する。具体的に言うと、ウェブアプリケーション３４は、適当なワークブック４４を計算サーバ３２に要求する。下でより詳細に述べるように、そのような要求に応答して、計算サーバプログラム４０は、ワークブック４４を取り出し、そのワークブック４４を、ＸＭＬベースの文書フォーマットなどのスプレッドシート文書フォーマットに変換する。当業者に既知の通り、ＸＭＬベースのフォーマットは、スプレッドシートの内容を表現するマークアップ言語スキーマを含む。スプレッドシート計算サーバプログラム４０が、要求されたワークブック４４をスプレッドシート文書フォーマットに変換したならば、スプレッドシート文書フォーマットのファイルが、ウェブアプリケーション３４に返される。
【００２７】
ウェブアプリケーション３４が、ワークブック４４のスプレッドシート文書フォーマット表現を計算サーバ３２から受信したならば、アプリケーションサーバ３０は、スプレッドシートウェブレンダラ３６を利用して、フォーマットされたスプレッドシートを、ウェブブラウザアプリケーション１０によってレンダリングできるスプレッドシートの表現に変換する。具体的に言うと、スプレッドシートウェブレンダラ３６は、フォーマットされた文書を、スプレッドシートを表示するためにウェブブラウザアプリケーション１０によってレンダリングできるＨＴＭＬを含む文書に変換する。さらに、本発明の実施形態によれば、スプレッドシートウェブレンダラ３６は、ウェブブラウザアプリケーション１０によってレンダリングされた時に、同一のワークブック４４を見るのに利用される時のスプレッドシートアプリケーション２６の出力に実質的に似て見えるＨＴＭＬを出力することができる。スプレッドシートウェブレンダラ３６が、ファイルのレンダリングを完了したならば、そのレンダリングが、アプリケーションサーバ３０によってコンピュータ２に返され、コンピュータ２では、そのレンダリングを、ウェブブラウザアプリケーション１０によってレンダリングすることができる。
【００２８】
やはり下でより詳細に述べるように、スプレッドシートウェブレンダラ３６は、コンピュータ２のユーザがウェブブラウザアプリケーション１０のコンテキスト内でスプレッドシートと対話することを可能にするために１つまたは複数のスクリプトをマークアップ言語ファイルにレンダリングするように動作可能とすることもできる。この機能性を提供するために、スプレッドシートウェブレンダラ３６は、ウェブブラウザアプリケーション１０によって実行可能なスクリプトコードを、返されるウェブページにレンダリングするように動作可能である。このスクリプトは、たとえば、ユーザが、スプレッドシートのより大きい部分を見ること、スプレッドシート内に含まれるピボットテーブルを変更すること、スプレッドシートアプリケーション２６内にスプレッドシートのネイティブバージョンをロードすること、および他の機能を実行することを可能にする機能性を提供することができる。
【００２９】
ウェブブラウザアプリケーション１０のコンテキスト内でスプレッドシートとの対話機能を提供するために、ウェブブラウザアプリケーション１０は、ユーザ入力を受け取る。ある種のタイプのユーザ入力に応答して、スクリプトを実行することができる。スクリプトが実行される時に、作用されるスプレッドシート内の要素を示す応答をアプリケーションサーバ３０に送信して、行われた対話のタイプを識別し、適当な要素に対して実行されなければならない機能をウェブアプリケーション３４に対してさらに識別することができる。そのような要求の受信に応答して、ウェブアプリケーションは、更新されたワークブック４４に関する追加要求を計算サーバ３２に対して行うことができる。これに応答して、スプレッドシート計算サーバプログラム４０は、ユーザアクションを考慮してワークブック４４を再計算し、更新されたワークブックのスプレッドシート文書フォーマットの表現をウェブアプリケーション３４に供給することができる。次に、スプレッドシートウェブレンダラ３６は、更新されたワークブックを、ウェブブラウザアプリケーション１０によってレンダリング可能なフォーマットにレンダリングするように動作可能である。次に、ウェブアプリケーション３４は、更新されたスプレッドシートをコンピュータ２に送信するように動作可能であり、このコンピュータ２で、その更新されたスプレッドシートを、ウェブブラウザアプリケーション１０によってレンダリングすることができる。このプロセスは、ユーザがウェブブラウザアプリケーション１０のコンテキスト内からスプレッドシートと対話する時に、何回でも繰り返すことができる。ユーザが、ウェブブラウザアプリケーション１０内でのスプレッドシートの編集を終了した時に、スプレッドシートに対して行われたすべての変更を、ウェブアプリケーション３４および計算サーバ３２のうちの任意の１つまたは複数を介して、データベース４２に格納されたワークブック４４に伝搬することができる。ワークブックパラメータの指定、発見、およびセッティングの例示的実施態様を含むこれらのさまざまなプロセスに関する追加の詳細を、下で提供する。
【００３０】
スプレッドシート文書パラメータの指定、発見、およびセッティング
これから図３Ａおよび３Ｂを参照して、ウェブブラウザアプリケーションプログラムのコンテキスト内からのスプレッドシートの表示および対話のプロセスを示す例示的なルーチン３００を説明する。本明細書で説明する本発明の実施形態が、ウェブブラウザアプリケーションプログラムのコンテキストで提示されるが、本発明を、マークアップ言語文書のレンダリングをサポートする他のタイプのアプリケーションプログラムで利用できることを了解されたい。たとえば、本明細書で説明する本発明の実施形態を、専用アプリケーションプログラムを必要とせずに文書のレンダリングおよびその文書との対話を可能にするために、パーソナルインフォメーションマネージャアプリケーションプログラム、プレゼンテーションアプリケーションプログラム、ドローイングまたはコンピュータ支援設計アプリケーションプログラム、あるいはデータベースアプリケーションプログラム内で利用することができる。
【００３１】
本明細書で提示されるルーチンの議論を読む時には、本発明のさまざまな実施形態の論理動作が、（１）コンピュータ実施される行為のシーケンスすなわちコンピューティングシステムで動作するプログラムモジュールとして、および／または（２）コンピューティングシステム内の相互接続された機械論理回路または回路モジュールとして実施されることを了解されたい。実施態様は、本発明を実施するコンピューティングシステムの性能要件に依存する選択の問題である。したがって、図３および６に示され、本明細書で説明する本発明の実施形態を構成する論理動作は、動作、構造的デバイス、行為、またはモジュールとして、さまざまに言及される。当業者は、これらの動作、構造的デバイス、行為、およびモジュールを、添付の特許請求の範囲に記載された本発明の趣旨および範囲から逸脱せずに、ソフトウェアで、ファームウェアで、特殊目的ディジタルロジックで、およびその任意の組合せで実施できることを了解するであろう。
【００３２】
ルーチン３００は、動作３０２で開始され、ここで、クライアントコンピュータ２が、ワークブック４４に関する要求をアプリケーションサーバ３０に送信する。この要求は、ユーザが、ウェブブラウザアプリケーション１０を介して、ウェブブラウザアプリケーション１０内で見、編集するためにワークブック４４を開くことを要求することに応答して、コンピュータ２によって送信することができる。アプリケーションサーバ３０が、ユーザが使用可能なワークブックを見ることと、見、編集するためにワークブックのうちの１つを選択することとを可能にするウェブベースのインターフェース３０を提供することができることを了解されたい。
【００３３】
動作３０２から、ルーチン３００は、動作３０４に継続し、ここで、アプリケーションサーバ３０は、ワークブック４４に関する要求を計算サーバ３２に送信する。具体的に言うと、ウェブアプリケーション３４は、サーバＡＰＩ  ３８を利用して、スプレッドシート計算サーバプログラム４０と通信することができる。この通信パスを介して、ワークブック４４に関する要求を行うことができる。
【００３４】
動作３０４から、ルーチン３００は、動作３０６に継続し、ここで、スプレッドシート計算サーバプログラム４０が、要求されたワークブック４４をデータベース４２から取り出す。次に、スプレッドシート計算サーバプログラム４０は、動作３０８で、ワークブック４４の内容を計算する。計算動作３０８には、ワークブック４４を再計算する時にスプレッドシートアプリケーション２６によって実行される計算に似た計算を含めることができる。
【００３５】
計算サーバ３２が、ワークブック４４を計算し終えたならば、スプレッドシート計算サーバプログラム４０は、計算されたワークブックを、ＸＭＬベースのフォーマットなど、適当なフォーマットに変換するように動作可能でもある。ＸＭＬフォーマットまたはマークアップベースのフォーマットは、スプレッドシートの内容を記述するマークアップ言語スキーマを含む。本発明の諸態様によれば、ワークブック４４の一部だけがＸＭＬフォーマットに変換されることを了解されたい。これは、スプレッドシートの表示可能部分だけをコンピュータ２に返すことを可能にする。追加部分は、ウェブページ２４によって提供されるインターフェースを介して要求することができる。代替案では、ワークブック４４全体をＸＭＬフォーマットに変換し、アプリケーションサーバ３０に返すことができる。
【００３６】
動作３１２で、計算サーバ３２は、ＸＭＬフォーマットされたワークブックを用いて、アプリケーションサーバ３０からの要求に応答する。次に、ルーチン３００は、動作３１４に継続し、ここで、アプリケーションサーバ３０で実行されるスプレッドシートウェブレンダラ３６が、ＸＭＬフォーマットされたワークブックを、ウェブブラウザアプリケーション１０によってレンダリングでき、表示できるフォーマットに変換する。具体的に言うと、スプレッドシートウェブレンダラ３６は、ＸＭＬワークブックを、ＨＴＭＬとスクリプトとの両方を含むウェブページ２４に変換する。ＨＴＭＬは、ウェブブラウザ１０によって、要求されたワークブック４４の内容を表示するのに利用される。スクリプトは、ウェブブラウザアプリケーション１０によって、ユーザがウェブブラウザアプリケーション１０のコンテキスト内でスプレッドシートのレンダリングされたバージョンと対話することを可能にするのに利用される。
【００３７】
動作３１４から、ルーチン３００は、動作３１６に継続し、ここで、アプリケーションサーバが、ワークブック４４に関するコンピュータ２からのオリジナルの要求に応答する。具体的に言うと、アプリケーションサーバ３０は、ウェブブラウザアプリケーション１０のコンテキスト内でワークブック４４を見、これと対話するのに必要なＨＴＭＬおよびスクリプトを含むウェブページ２４をコンピュータ２に送信する。
【００３８】
コンピュータ２が、ウェブページ２４を受信したならば、ウェブブラウザアプリケーション１０は、ウェブページ２４の内容をレンダリングするように動作可能である。具体的に言うと、ＨＴＭＬは、同一のワークブック４４がスプレッドシートアプリケーション２６を利用して開かれた場合にスプレッドシートアプリケーション２６によって提供されるものに実質的に似たワークブック４４のビューを提供するためにレンダリングされる。さらに、ウェブブラウザアプリケーション１０は、スクリプトをレンダリングするように動作可能であり、その結果、コンピュータ２のユーザは、ウェブブラウザアプリケーション１０のコンテキスト内でスプレッドシートと対話できるようになる。
【００３９】
ここで図３Ｂに移って、ユーザがウェブブラウザアプリケーション１０のコンテキスト内でレンダリングされたワークブックと対話することを可能にする本発明のさまざまな態様を示す例示的なルーチン３２０を説明する。ルーチン３２０は、動作３２２で開始され、ここで、ウェブページを表示するのに必要なＨＴＭＬおよびユーザがスプレッドシートと対話することを可能にするのに必要なスクリプトを含むウェブページ２４の内容をレンダリングする。次に、ルーチン３２０は、動作３２４に継続し、ここで、ウェブブラウザアプリケーション１０が、表示されたスプレッドシートと対話するユーザ入力を受け取る。たとえば、ウェブブラウザアプリケーション１０は、ピボットテーブルの内容を変更するユーザ入力、表示されたワークブック内の別のスプレッドシートを要求するユーザ入力、スプレッドシートに対するすべての変更を保存するユーザ入力、または他の機能を実行するユーザ入力を受け取ることができる。１つまたは複数のスクリプトをウェブブラウザアプリケーション１０によって実行して、入力を受け取り、対話を実行させるのに必要なアプリケーションサーバ３０との通信を実行できることを了解されたい。
【００４０】
動作３２４でユーザから入力を受け取ったならば、適当なスクリプトが、動作３２６で、ユーザによって行われた特定のアクションを識別するデータをアプリケーションサーバ３０に送信する。動作３２８で、アプリケーションサーバ３０は、ユーザによって行われた特定のアクションを判定する。要求されたアクションが識別されたならば、アプリケーションサーバ３０は、その特定のアクションが特定のワークブックに対して行われることを要求するコマンドを計算サーバ３２に送信する。上で述べたように、アプリケーションサーバ３０は、サーバＡＰＩ  ３８を介して計算サーバ３２と通信する。
【００４１】
現在のワークブックに対してコマンドを実行する要求をアプリケーションサーバ３０から受信したことに応答して、スプレッドシート計算サーバプログラム４０は、要求されたアクションをワークブック４４に対して実行する。たとえば、ユーザが、ピボットテーブル内の要素を再配置することを要求した場合に、スプレッドシート計算サーバ４０は、それらの要素の実際の再配置を実行する。アクションが実行されたならば、スプレッドシート計算サーバプログラム４０は、動作３３２でワークブックを再計算する。再計算されたワークブックは、ウェブブラウザアプリケーション１０を介して現在開かれているワークブックに対してユーザによって行われた変更を反映する。
【００４２】
ワークブック４４が再計算されたならば、３３４で、計算サーバ３２は、再計算されたワークブックをＸＭＬフォーマットに変換する。このプロセスは、上で図３Ａを参照して説明した。再計算されたワークブックがＸＭＬフォーマットに変換されたならば、再計算されたワークブックが、計算サーバ３２からアプリケーションサーバ３０に送信される。アプリケーションサーバ３０では、スプレッドシートウェブレンダラ３６が、再計算されたスプレッドシートのＸＭＬバージョンを、ウェブブラウザアプリケーション１０によってレンダリング可能なフォーマットに変換する。次に、再計算されたスプレッドシートのレンダリング可能なバージョンが、ウェブブラウザアプリケーション１０に送信され、ウェブブラウザアプリケーション１０で、そのレンダリング可能なバージョンをレンダリングし、ユーザに表示することができる。このプロセスは、上で図３Ａおよび動作３１２〜３１８に関して説明した。本発明に従ってワークブックパラメータを指定し、セットし、編集し、発見するプロセスの例示的で非限定的な実施態様の詳細を、これから、下でより詳細に説明する。
【００４３】
ワークブックパラメータの指定、セッティング、編集、および発見
上で説明したように、本発明によれば、ワークブック作成者は、セルおよび／またはフィルタを編集可能パラメータとして指定することができる。次に、サーバ、たとえば、とりわけウェブブラウザを介する表示のためにスプレッドシート文書をレンダリングするスプレッドシートアプリケーションサーバは、ユーザインターフェース（ＵＩ）およびウェブサービスアプリケーションプログラミングインターフェース（ＡＰＩ）を介して編集可能パラメータを公開することができる。本発明の一態様では、スプレッドシートクライアントを使用して、パラメータとしてのセルおよびフィルタの指定を可能にすることによってワークブックパラメータに関する経験を作成することができる。
【００４４】
背景技術で述べたように、現在のアプリケーションサーバは、セル値のインライン編集を可能にしないが、セル値の特定のサブセットを変更する機能が効果的である多数のカスタマシナリオがある。これには、たとえば、単純で明確に定義された計算モデル（たとえば、モーゲージカリキュレータ）およびｗｈａｔ−ｉｆ分析（たとえば、年収の年単位の増加率の変更）が含まれる。そのような特徴は、アプリケーションサーバウェブレンダリング経験の一部として値を変更することを望むエンドユーザと、特定のパラメータ値を発見し、取り出し、セット／編集するためのウェブサービスＡＰＩとの両方によって使用することができる。
【００４５】
本発明によるスプレッドシートクライアントアプリケーションは、どのセルがパラメータであるかを指定する形（１つまたは複数）をユーザに与える。ユーザは、どのセルがパラメータであるかを発見することができ、対応するセルを編集することができる。本発明の一実施形態では、サーバだけが、パラメータを公開する（クライアントのパラメータ指定機能性は、サーバにワークブックをパブリッシュすることの一部になる）が、本発明は、スプレッドシートクライアントアプリケーションも、パラメータを公開する、すなわちパラメータの発見、検索、およびセッティングを可能にする代替実施形態を企図している。
【００４６】
本明細書で説明されるのは、ワークブック作成者がスプレッドシートクライアントでのパラメータとして特定のセルを指定することを可能にする技法である。アプリケーションサーバは、ＵＩまたはＯＭのいずれかを介するこれらのセルの値の変更をサポートする。そのような機能性を、スプレッドシートクライアントによってサポートすることもできる。
【００４７】
当業者が了解できるとおり、ユーザにパラメータを公開するさまざまな形がある。たとえば、１つの例示的な非限定的実施形態で、ダッシュボードを利用することができる。たとえば、ビジネスインテリジェンス（ＢＩ）ダッシュボードなどの現在のダッシュボードは、さまざまなデータレンダリングウェブパーツ（たとえば、ＳＱＬ  Ｓｅｒｖｅｒ  Ｒｅｐｏｒｔｉｎｇ  ＳｅｒｖｉｃｅｓからのＯｆｆｉｃｅ  Ｗｅｂ  Ｃｏｍｐｏｎｅｎｔｓ（ＯＷＣ））を使用して作成され、すべての異なるデータビューを同期してフィルタリングすることが望ましい。これは、すべてのウェブパーツを単一の「パラメータ」値にリンクすることによって達成することができる。
【００４８】
したがって、スプレッドシートワークブックを、本発明に従ってこれらのダッシュボードに組み込むことができ、その結果、ワークブックは、類似するページレベルのフィルタおよびパラメータを追い払えるようになり、それぞれが例示的であり非限定的な次のシナリオが可能になる。（１）ある種のセルをパラメータとして定義する、スプレッドシートクライアント内のＵＩおよびＯＭをエンドユーザに提供し、（２）スプレッドシートファイル内でパラメータ情報を永続させ、その結果、アプリケーションサーバが、ＵＩおよびウェブサービスＡＰＩを介してパラメータを公開できるようにし、（３）特徴がスプレッドシートクライアント／サーバシナリオ向けであることをエンドユーザに明らかにするために特徴ＵＩおよびエントリポイントを設計し、（４）システムの諸部分の間での適当な通信に従うことを介してワークブックパラメータを駆動するためのフィルタ（またはスライサ）ウェブパーツを使用することによってＢＩダッシュボードを作成することを含むアプリケーションサーバシナリオを可能にする。したがって、一態様で、本発明は、パラメータに値を与えるスライサコントロールを提供する。
【００４９】
たとえば、ある会社が、データを収集し、製造業者、ウォール街のアナリスト、仲買人、および小売業者のＰｏｉｎｔ  ｏｆ  Ｓａｌｅデータに基づくスプレッドシートレポートを作成し、これらのレポートが、ＨＴＭＬファイルとしてウェブを介して配布されると仮定する。ＨＴＭＬファイルとして、これらのレポートは、完全に静的であり、データをフィルタリングする形、またはビジネス上の質問に対する回答を見つけるためにレポート内のデータを探査する形はない。これらの理由から、その会社は、そのクライアントがほとんどすべての想像できるレポートを求める場合にもそのレポートが入手可能になるようにするために、クライアントのためにこれらのレポートを百万件以上生成する。これの結果は、これらの会社が生成するレポートの３〜５％だけが、一貫した基礎で使用され、これらの会社が予想しない些細な変更が必要な時に、アナリストが、新しいレポートを手動で作成し、実行しなければならない（高価で時間のかかるプロセス）ことである。
【００５０】
本発明のアプリケーションサーバおよびスプレッドシートウェブパーツを用いると、そのような会社は、クライアントのために生成するレポートの数を大幅に減らすことができ、これは、会社の金を節約すると同時に、クライアントが、彼らが探している情報を見つけるのをより簡単にする。クライアントが求める可能性がある考えられるレポートのすべてを作成するのではなく、本発明を用いると、会社は、正しいデータソースからのデータをサーバ上のスプレッドシートワークブックに引き出す、レポートのベースセットを作成できるようになる。これらのレポートは、現在の多数のレポート（「過去１年間売上ＮＷ」、「ＳＷ」、「ＮＥ」、「ＳＥ」、「製品別」、「製品別ＮＷ」、「製品別ＮＥ」、「製品別ＳＷ」、「製品別ＳＥ」など）ではなく、クライアントがより簡単に理解できる「過去１年間の売上」などのベースレポートになる。単純なパラメータ化を用いて、クライアントは、彼らが最も関心を持つ情報を見るために、これらのレポートをカスタマイズし、さまざまな次元でフィルタリングできるようになる。さらに、クライアントが、特定のレポートのドリルダウンまたは特定の製品系列の「トップ１０」を見たい場合に、そのクライアントは、既存のレポート内で即座にそれを行うことができ、新しいレポートを会社が生成することを要求する必要はない。
【００５１】
本発明のもう１つの例示的な使用について、Ｊｏｈｎは、彼の上層経営陣のために週次売上レポートを作成する。今日、Ｊｏｈｎは、外部データへの接続を有するワークブックを有し、彼は毎週データをリフレッシュし、その後、数人が、彼らが働くさまざまな領域についてフィルタリングされたワークブックのスナップショットをとる。次に、Ｊｏｈｎは、これらのイメージを電子メールに貼り付け、要約メールを経営陣に送信する。
【００５２】
しかし、本発明のスプレッドシートソフトウェアをインストールした後に、Ｊｏｈｎは、彼のワークブックをリワークして、以前より読みやすくする。Ｊｏｈｎは、彼のワークブックの最上部に地域を述べる単一のセルをも有する。スプレッドシートサーバへのパブリッシュ行為中に、Ｊｏｈｎは、パラメータになるようにある種のセルをセットし、地域セルをワークブックパラメータとしてセットすると決断する。このワークブックがアプリケーションサーバにロードされる時に、彼の経営陣は、編集可能な地域フィールドを含む新しいタスクペインが表示されるのを見る。経営者は、異なる領域を入力し、Ａｐｐｌｙ（適用）をクリックし、入力した領域について更新されたデータおよびワークブックを見ることができる。
【００５３】
もう１つの例として、Ｓａｍａｎｔｈａは、彼女の組織の上級副社長のためにダッシュボードを作成しつつあり、そのダッシュボードが、単一の管理しやすいフィルタコントロールからすべてが作成される、主要業績評価指標（ＫＰＩ）、グラフ、およびデータのシートを表示することを望む。Ｓａｍａｎｔｈａは、複数のアプリケーションサーバ、いくつかのＫＰＩ、および１つのフィルタ（スライサ）コントロールを用いるページをセットアップする。次に、Ｓａｍａｎｔｈａは、プロジェクト名のフィルタ値をページ上のさまざまな部分に追いやるように、フィルタコントロールを調べ、割り当てる。これは、経営者が、異なるプロジェクトによってフィルタリングし、ダッシュボード上のすべての部分がそれに従って更新されるのを見ることを可能にする。
【００５４】
１つの非限定的実施形態で、セルのサブセットだけを、パラメータになるように選択することができる。それらがどのように選択されるか、いつどこに使用可能パラメータのリストが格納されるか、およびパラメータ特徴に関連するＯＭを、下でより詳細に説明する。
【００５５】
一実施形態で、ユーザが文書をパブリッシュすることによって決定されるダイアログ内で、ワークブックパラメータを指定するＵＩは、次の２つのダイアログすなわち、ワークブック内の既存の定義済みパラメータを示すダイアログと、パラメータについて選択すべき使用可能な名前参照のリストを有するダイアログと（すべてのセルをパラメータとして選択することができない場合には、上で述べたように、こうである必要はない）を含む。
【００５６】
このダイアログは、サーバのパブリッシュ／管理セッティングダイアログの一部として開始され、タブ付きダイアログ、既存のソートダイアログ（順序付け機能を有する）など、任意の適切な形式とすることができる。
【００５７】
入力時に、現在のワークブックで定義されている現在のパラメータが、リストにロードされる。現在のワークブックで定義されているパラメータがない場合には、リストは空である。どちらの場合でも、パラメータは、このダイアログに最初に入る時に、リスト内で選択されていない。
【００５８】
１つの例示的な非限定的実施態様で、パラメータリストは、（Ａ）Ｎａｍｅ（名前）  とられるパラメータの名前（デフォルトで、リストをＮａｍｅによって昇順（Ａ〜Ｚ）でソートすることができる）、（Ｂ）Ｖａｌｕｅ（値）  ストリング定数、名前が参照する現在の値、またはエラーコードを返す、（Ｃ）Ｃｏｍｍｅｎｔ（コメント）  Ｎａｍｅに関連するすべてのコメント、および（Ｄ）Ｒｅｆｅｒｓ  ｔｏ（〜を参照する）  このパラメータがそれに基づくＮａｍｅが現在参照するもの、のうちのいずれか１つまたは複数を含む。
【００５９】
１つの非限定的実施形態で、パラメータリストは、標準リストコントロールのように機能する。たとえば、パラメータ（行内のどこか）をシングルクリックすることによってリスト内の１つまたは複数のパラメータを選択することが可能であり、マウスおよびキーボードを用いる通常のリストコントロール挙動に似て、複数選択が使用可能である。たとえば、あるパラメータを選択することができ（たとえば、マウスポインタまたは矢印キーを用いて）、パラメータを、既に選択されている任意の他のパラメータに加えて選択することができ、パラメータを、既に選択されている任意の他のパラメータおよび選択物と以前の選択との間のパラメータに加えて選択することができ、複数のパラメータを、マウスポインタによるクリックドラッグによって選択することができる。
【００６０】
もう１つの非限定的実施形態で、「Ａｄｄ（追加）」ボタンまたは機能は、少なくとも１つの有効な名前があるかどうかを確かめ、パラメータ追加ダイアログを起動し、「Ｄｅｌｅｔｅ（削除）」ボタンは、ユーザが以前に追加された１つまたは複数のパラメータを削除することを可能にする。同様に、１つまたは複数のパラメータが選択されている時に「Ｄｅｌｅｔｅ」ボタンを押すと、これらのパラメータの削除が開始される（リストから、およびファイルの保存時に）。パラメータ追加ダイアログからリターンする時に、１つの例示的な非限定的実施形態では、チェックマークを付けられたパラメータが、パラメータ追加ダイアログに表示されたのと同一の順序に従ってソートされて、リストの最下部にある。
【００６１】
１つの例示的な非限定的実施形態では、ユーザは、上下の矢印ボタンを使用することによってパラメータを順序付けることができ、もう１つの例示的な非限定的実施形態では、順序付けパラメータの手段としてパラメータを実施できる場合にドラッグアンドドロップによってパラメータを順序付けることができる。
【００６２】
パラメータの格納に関して、指定されたパラメータを格納し、ワークブックに関連付ける任意の従来の既知の手段を利用することができる。例示的な非限定的実施態様について、ワークブックパラメータを、隠し文書プロパティなどの文書プロパティ内および／またはワークブックファイル内に格納することができる。前者は、アプリケーションサーバによるパラメータの簡単な抽出を可能にし、スライサコントロールおよび追加の解決策を用いるダッシュボードのセットアップのためのすばやい取出しを可能にする。ワークブックパラメータを、ファイルを保存するかパブリッシュする時に格納することができる。
【００６３】
１つの例示的な非限定的実施形態では、各パラメータのために格納される情報は、ユーザごとに入力された情報と同一であるが、追加の情報を格納することもできる、すなわち、パラメータストレージフォーマットは、本発明に従って拡張可能である。次のプロパティを、パラメータごとに格納することもできる：定義されたＮａｍｅ、および名前がアプリケーションサーバＵＩまたはＯＭに表示される順序。
【００６４】
例示的な非限定的実施形態では、ワークブックレベルでのＳｅｒｖｅｒＰａｒａｍｅｔｅｒｓのＳｅｒｖｅｒＰａｒａｍｅｔｅｒｓコレクションは、表Ｉからの次のものを含むことができ、ＳｅｒｖｅｒＰａｒａｍｅｔｅｒオブジェクトは、下の表ＩＩのメンバを含むことができる。
【００６５】
【表１】
2009508237.tif 000003
【００６６】
【表２】
2009508237.tif 000004
【００６７】
アプリケーションサーバを介するセルの内容の編集
このセクションでは、ＳｈａｒｅＰｏｉｎｔ  Ｐｏｒｔａｌ  Ｓｅｒｖｅｒ（ＳＰＳ）フィルタまたはアプリケーションサーバ自体のワークブックパラメータタスクペインのいずれかを介する、アプリケーションサーバを介してセルの内容を編集するユーザの能力を全般的に説明する。しかし、当業者は、セルの内容を編集する代替の既知の機構を、本発明に従って使用できることと、次の実施態様詳細が、例示のために提示されることとを了解することができる。
【００６８】
ある背景のために、ＳＰＳは、スプレッドシートサーバによって実行されるいくつかのタスクに使用される。アプリケーションサーバは、本明細書の例示的実施形態で説明するように、とりわけ、スプレッドシートワークブックをたとえばｄｙｎａｍｉｃ  ｈｙｐｅｒｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ（ＤＨＴＭＬ）としてレンダリングする、ウェブパーツである。計算サーバ（ＣＳ）は、計算エンジンであり、一般に、スプレッドシートサーバのバックエンドコンポーネントを含む。本明細書で説明するように、ウェブフロントエンド（ＷＦＥ）は、アプリケーションサーバ、アプリケーションプログラミングインターフェース（ＡＰＩ）、およびプロキシを含むスプレッドシートサーバの前を向くコンポーネントを含む。
【００６９】
前のセクションで説明したように、本発明によるワークブックパラメータは、ワークブック作成者が彼らのワークブック内のセルのサブセットを選択し、これらをユーザによって編集可能としてマークする形を含む。次に、これらのセルを、ワークブックの文書プロパティに保存し、アプリケーションサーバ自体のタスクペインまたはＳＰＳフィルタのいずれかを介してエンドユーザに公開することができる。このセクションでは、これらの解決策のさまざまな例示的な非限定的実施態様を説明する。
【００７０】
図４Ａに、本発明によるパラメータと共にアプリケーションサーバを示す例示的な非限定的ＵＩスクリーンショットを示す。本発明を用いると、ユーザは、コンポーネントダウンロードを必要とせずにアプリケーションサーバを使用してパラメータをセットすることができる。
【００７１】
これに関して、本発明は、さまざまなパラメータ化シナリオをサポートし、その結果、ユーザは、スプレッドシートクライアントソフトウェアに戻る必要なしに、一般的なタスクを完了できるようになる。たとえば、パラメータ化は、本明細書で説明するＳＰＳスライサインターフェースを扱う。これに関して、本発明は、ユーザが、他のウェブパーツを駆動するためにアプリケーションサーバからパラメータを入手することを可能にする。
【００７２】
本発明のアプリケーションサーバによって達成できるいくつかの例示的な非限定的シナリオについて、編集可能なセルを有するワークブックを作成する作業を検討する。たとえば、Ｊｏｈｎが、彼の上層経営陣のために週次売上レポートを作成すると仮定する。今日、Ｊｏｈｎは、外部データへの接続を有するワークブックを有し、彼は毎週そのデータをリフレッシュし、その後、数人が、彼らが働くさまざまな領域についてフィルタリングされたワークブックのスナップショットをとる。次に、Ｊｏｈｎは、これらのイメージを電子メールに貼り付け、要約メールを経営陣に送信する。
【００７３】
しかし、適当なソフトウェアをインストールした後に、Ｊｏｈｎは、シートデータバンドワゴンにジャンプし、シートデータを使用して彼のワークブックをリワークして、以前より読みやすくする。Ｊｏｈｎは、彼のワークブックの最上部に地域を述べる単一のセルをも有する。スプレッドシートサーバへのパブリッシュ中に、Ｊｏｈｎは、本発明を介してパラメータになるようにある種のセルをセットできることを理解し、地域セルをワークブックパラメータとしてセットすると決断する。このワークブックがアプリケーションサーバにロードされる時に、Ｊｏｈｎは、編集可能な領域フィールドを含む新しいタスクペインが表示されるのを見て興奮する。Ｊｏｈｎは、「Ｓｏｕｔｈ（南部）」を入力し、「Ａｐｐｌｙ」をクリックし、アプリケーションサーバが南部領域についてすべて更新されたデータを用いてリフレッシュするのを見る。今や、Ｊｏｈｎは、これらの週次ステータスメールをもう一度送信する必要が全くない。
【００７４】
もう１つのシナリオについて、本発明は、ダッシュボードの作成を可能にする。たとえば、Ｓａｍは、彼の組織の上級副社長のためにダッシュボードを作成しつつあり、そのダッシュボードが、単一の管理しやすいフィルタコントロールからすべてが作成される、主要業績評価指標（ＫＰＩ）、グラフ、およびデータのシートを表示することを望む。本発明によれば、Ｓａｍは、複数の「裸の」アプリケーションサーバ、いくつかのＫＰＩ、および１つのＳＰＳスライサコントロールを用いるページをセットアップする。次に、Ｓａｍは、ページのさまざまな部分のすべてからフィルタ値を取り込むためにスライサコントロールを調べ、割り当て、それらのそれぞれを単一の「レポート」コントロールに割り当てる。
【００７５】
今や、ある副社長が、ダッシュボードページに行き、リストからレポートを選択する時に、シート、グラフ、およびＫＰＩインジケータのすべてが、そのレポート内のデータを反映するために更新される。というのは、Ｓａｍが、選択されたレポートに基づいてフィルタリングするようにすべてのワークブックをセットしたからである。
【００７６】
本発明の例示的な非限定的実施態様によれば。ワークブックパラメータを、文書プロパティとして保存することができ、ＣＳは、ＣＳへのプライベートＡＰＩを介してワークブックプロパティに変更を適用する能力を含む。
【００７７】
一実施形態で、本発明は、ユーザがページをサブミットする時に必ず、トランスフォーマを介してパラメータとスライサ内でそのパラメータのためにセットされた値とへのアクセスを与えるインターフェースを提供する。
【００７８】
ＳＰＳスライサと本発明のコントロールとの間の接続をセットアップするために、本発明の１つの例示的な非限定的実施形態では、ユーザは、アプリケーションサーバがそれに関するページの設計モードに進み、「フィルタウェブパーツゾーン」へのフィルタコントロールのドロップを開始する。次に、ユーザは、そのコントロールの右上の矢印をクリックし、このドロップダウン内で、Ｃｏｎｎｅｃｔｉｏｎｓ（接続）を選択し、Ｃｏｎｎｅｃｔｉｏｎからのフライアウトメニューは、「Ｇｅｔ  Ｆｉｌｔｅｒ  Ｖａｌｕｅｓ  Ｆｒｏｍ（〜からフィルタ値を得る）」オプションを含み、これは、やはり、｛ＳｐｒｅａｄｓｈｅｅｔＷｅｂＲｅｎｄｅｒｅｒ｝へのフライアウトを引き起こす。
【００７９】
ユーザがアプリケーションサーバを選択した後に、ユーザは、そのアプリケーションサーバが公開している未割当のパラメータのリストから選択するよう促され、あるいは、ユーザが、多値フィルタコントロールからの接続のセットアップを試みた場合には、ユーザは、アプリケーションサーバが多値パラメータを全く公開していないことを伝えるメッセージを受け取り、そのフィルタコントロールを使用してそのアプリケーションサーバへの接続をセットアップすることができなくなる。ユーザが、単一値コントロールからの接続のセットアップを試みていたと仮定すると、ユーザは、次に、リストからパラメータを選択し、コントロールは、その後にセットアップされたと考えられる。１つの非限定的実施形態では、あるパラメータがフィルタコントロールに接続され、ワークブックパラメータタスクペインが可視である場合に、そのパラメータは、タスクペイン内でディスエーブルされる。
【００８０】
１つの非限定的実施形態では、単一セルの複数のパラメータが、スライサから単一の値を受け入れ、それが、すべてのパラメータについて本発明が「ＳｕｐｐｏｒｔｓＳｉｎｇｌｅＶａｌｕｅ」フラグをスライサに渡す理由である。これは、スライサが、ユーザが単一値フィルタ要素から単一セルのパラメータへの接続をセットアップすることだけを許容することを意味する。
【００８１】
１つの例示的な非限定的実施形態では、値は、名前／値対としてＣＳに送られ、その結果、すべてのパラメータをＣＳに送る必要はなく、それらの順序は問題にならなくなる。誤動作の場合には、適当なエラーハンドリングを、本発明に従って適用することができる。
【００８２】
本発明の例示的な非限定的実施形態では、展開／縮小バーが、ワークブックパラメータタスクペインの横に設けられ、たとえば、その左または右にあるが、シートの右または左（それぞれ）にあり、ユーザがこのタスクペインを隠すか表示することを可能にする。ツールバーは、展開／縮小バーとワークブックパラメータタスクペインとの両方の上に配置することができる。
【００８３】
展開／縮小バーは、タスクペインが縮小されているのか展開されているのかに依存するイメージを含み、そのイメージは、垂直と水平との両方でセンタリングされる。例示的な非限定的実施形態では、そのイメージは、次のように使用される。
【００８４】
タスクペインが可視である時に展開／縮小バーをクリックすると、タスクペインが隠され、展開／縮小バーがアプリケーションサーバの右端エッジ（または、右から左（ＲＴＬ）モードでは左エッジ）に移動され、グリッドおよびシートナビゲーションバーの幅が、それに伴って広がる。タスクペインが隠されている時に展開／縮小バーをクリックすると、タスクペインが表示され、展開／縮小バーがそれと共に外に移動され、グリッドおよびシートナビゲーションバーの幅が縮小される。
【００８５】
ユーザは、拡大／縮小バーをタップし、エンターキーを使用してこれを操作できなければならない。
【００８６】
タスクペインの状態は、縮小されていても展開されていても、ＣＳへのポストバックを介して保存される。したがって、ユーザが、タスクペインを縮小し、その後、ＣＳへのポストバックを必要とするアクションを実行する場合に、ページが再ロードされる時に、タスクペインは、縮小されたままでなければならない。
【００８７】
１つの例示的な非限定的実施形態では、ワークブックパラメータタスクペインは、ツールバー（下に位置決めされる場合に）を除いて、アプリケーションサーバ内のすべてのコントロールの右（ＲＴＬモードでは左）で可視の状態でスタートする。
【００８８】
表示すべきパラメータおよび対応するテキストボックスに表示すべきものは、ＣＳによってアプリケーションサーバに渡される。さまざまな非限定的実施形態では、ワークブックパラメータタスクペインの本体内に、名前付き範囲名およびテキストボックスがあり、このテキストボックス内で、ユーザがデータを入力することができる。
【００８９】
例示のために、タスクペインのＵＩの例示的実施態様を図４Ｂに示す。ユーザが、最初にアプリケーションサーバを開く時に、このワークブックのパラメータがあり、ワークブックパラメータタスクペインがウェブパーツプロパティを介してディスエーブルされていない場合には、ワークブックパラメータタスクペインが、可視の状態でスタートする。一実施形態で、パラメータは、ＣＳによってアプリケーションサーバに渡された順序と同一の順序でワークブックパラメータタスクペイン内に表示される。
【００９０】
他の実施形態では、説明プロパティが、図４Ｃに示されているように、ユーザがテキストボックスのアイコンの上でホバリングする時にツールチップＴＴＩＰとして表示される。使用されるアイコンは、そのセルのコメントがあることをユーザに示すためにスプレッドシート内で使用されるアイコンと同一とすることができる。Ｄｅｓｃｒｉｐｔｉｏｎプロパティはオプションなので、Ｄｅｓｃｒｉｐｔｉｏｎ値が与えられない場合には、このアイコンは表示されず、ツールチップは表示されない。マウスカーソルは、オプションで、このイメージの上にある時にポインタのままとすることができる。
【００９１】
タスクペインに収めることができるものより多数のパラメータがある場合には、本発明の一実施形態で、パラメータおよびその値を含むタスクペインのセクションだけをカバーするスクロールバーが表示される。ユーザが、ビューワページ内でパラメータを有するワークブックを見ている場合には、タスクペインは可視になる。ユーザは、拡大／縮小バーを使用することによって、このタスクペインを隠すか表示することができる。情報バーは、２つの状態すなわち、ページが設計モードである時の状態と、ページがビューモードである時の状態とを有する。
【００９２】
本発明によってサポートできるもう１つのタイプのパラメータが、複数の値を受け入れることができるＰｉｖｏｔＴａｂｌｅ  Ｐａｇｅ  Ｆｉｅｌｄ（ピボットテーブルページフィールド）である。
【００９３】
計算サーバの動作およびアプリケーションサーバとの対話
上で説明したように、本発明によれば、スプレッドシートサーバは、ワークブックをパラメータ化する機能を含む。アプリケーションサーバを介する呼出し側アプリケーションは、パラメータのリストを要求し、その値をセットする能力を含む。上で説明したように、アプリケーションサーバは、ウェブを介してワークブックをレンダリングするウェブレンダラを含む。これに関して、パラメータは、ワークブック作成者が、単一のまたは複数のパラメータの値に基づいてその内容をすばやく変更できる単一のテンプレートスプレッドシートを作成することを可能にする。
【００９４】
たとえば、ワークブック作成者は、モーゲージカリキュレータを設計し、利率パラメータ、元金パラメータ、および頭金パラメータを作成する。ユーザは、パラメータを適用し、セルが、適当な結果を計算し、返す。パラメータは、単一のウェブページが、スライサの値に基づいてすべてが同期しているものとすることができる複数のウェブパーツからなるビジネスインテリジェンス（ＢＩ）ダッシュボードシナリオにアプリケーションサーバが参加することをも可能にする。
【００９５】
ＢＩダッシュボードは、ステータスを通信し、アクションを駆動するツールであり、しばしば、レポート、チャート、メトリックス、および主要業績評価指標として提示される定量的情報と、提供される定量的データに対するダッシュボード作成者のコメントとして提示される定性的分析との混合物である。
【００９６】
ワークブックパラメータは、アプリケーションサーバを呼び出すことによって発見でき、セットできる、ワークブックに関連する変数である。内部的に、パラメータは、パラメータとして「タグを付けられた」単一セル名前付き範囲である。
【００９７】
ダッシュボードの機能の１つが、パラメータの値に基づいてダッシュボードをフィルタリングでき、あるいはスライスできることである（スライサウェブパーツを使用することによって）。ＢＩダッシュボードの一部であるアプリケーションサーバ内でレンダリングされつつあるワークブックに関して、アプリケーションサーバは、そのＢＩダッシュボードに割り当てられたパラメータを反映するために「更新」しなければならない。
【００９８】
これを達成するために、本発明に従って、ウェブパーツが、それが含むパラメータを通信する機構およびその値をセットする機構を提供する。
【００９９】
スプレッドシートサーバがこのシナリオに参加するために、ユーザが、たとえばＳｈａｒｅｐｏｉｎｔスライサパーツ内でパラメータを変更する時に、アプリケーションサーバ内で表示されるスプレッドシートワークブックは、スライサの値を反映する。
【０１００】
本明細書で説明するように、呼出し側アプリケーション（アプリケーションサーバ）は、サーバに、ワークブックに関連するパラメータのリストを要求することができる。例示的実施形態では、パラメータ値をセットすることが、効果的にセルの値をセットすることと同等であっても、セル値をセットすることが失敗したことではなく、パラメータ動作が失敗したことを伝えるエラーメッセージが、ユーザに与えられる。
【０１０１】
本発明のもう１つの態様では、パラメータのセッティングに関連するワークブック動作が、最適化される。たとえば、計算は、すべてのパラメータ値がセットされるまで、計算モードにかかわりなく保留される。さらに、本発明は、パラメータ（たとえば、名前付き範囲）の定義が、それでも、ワークブックがロードされた時にパラメータであることに関する要件を満足することを保証する。さらに、呼出し側アプリケーション（アプリケーションサーバ）は、パラメータの値（単一の）をセットすることができる。
【０１０２】
これらのダッシュボードのコンシューマは、ダッシュボードにナビゲートし、パラメータウェブパーツ内で「プロジェクト」パラメータを変更することができる。プロジェクトパラメータが変更されたならば、ページ上のウェブパーツのすべて（アプリケーションサーバのウェブパーツおよびレポーティングサービスレンダリングウェブパーツを含む）は、ダッシュボードコンシューマが選択したプロジェクトに関連するデータを反映するために更新する。アプリケーションサーバに関して、パラメータセルの値を関数への入力としてとるシートデータ式を使用することができる。
【０１０３】
モーゲージカリキュレータは、毎月の支払いを判定するために複数のパラメータが入力されることを必要とする。このシナリオでは、誰かが、ワークブックを作成し、元金、利率、ローン期間、および頭金の名前付き範囲を作成する。次に、ユーザが適用ボタンを押し、ワークブックが計算され、ユーザに毎月の支払いを示す。
【０１０４】
パラメータ情報の取出しに関して、計算サーバ（ＣＳ）は、呼出し側アプリケーションが、パラメータ名、ワークブック内のパラメータの順序（アプリケーションサーバがそれらを提供された順序でリストするため）、パラメータの現在値、およびパラメータの説明のうちの任意の１つまたは複数を含むパラメータ情報を取り出す手段を提供する。
【０１０５】
パラメータの名前は、それが占める名前付き範囲の名前である。パラメータ順序は、表示のためのパラメータ順序を定義し、さまざまな形およびフォーマットで定義することができる。ＣＳは、この情報を呼出し側アプリケーション（アプリケーションサーバ）に返すことができる。パラメータの現在値に加えて、各パラメータは、ＣＳが呼出し側アプリケーション（アプリケーションサーバ）に渡すことができるオプションの説明をも有する。
【０１０６】
ＣＳは、アプリケーションサーバがワークブック内の各パラメータのパラメータ値をセットする手段を提供する。ＣＳへの単一の呼出しで、１つまたは複数のパラメータ値をセットすることができる。上で述べたように、本発明の一態様では、ポストバックの一部であるすべてのパラメータ値がセットされるまで、計算を保留することができる。パラメータの値をセットすることは、ＳｅｔＣｅｌｌ（）メソッドを介してセルの値をセットすることと同等である。
【０１０７】
オプションで、ＣＳは、パラメータの値に基づいて、サーバ上の数フォーマットを暗黙のうちにまたは明示的に変更しない。
【０１０８】
計算の保留およびワークブックが開かれる時のデータリフレッシュに関して、本発明のＣＳは、ワークブックの計算モードまたはデータリフレッシュセッティングにかかわりなく、ワークブックが計算されるかデータがリフレッシュされる前にセル値をセットする能力をサポートする。パラメータがセットされたならば、ワークブックは、それが作成された時の計算モードを返す。
【０１０９】
一実施形態で、アプリケーションサーバは、デフォルト値を有するスライサがページにある時に、ワークブックを開くことの一部としてパラメータを渡す。そうでない場合には、アプリケーションサーバは、ワークブックを開く要求の一部としてパラメータ値を渡すことはしない。
【０１１０】
ワークブックが手動計算モードである場合に、これは、そのワークブックが、潜在的に「ダーティ」計算状態にあり、その状態から、ユーザが、パラメータ値が変更されることに起因するワークブック内の変化を知るために計算を開始できることを意味する。
【０１１１】
すべてのワークブックパラメータが、アプリケーションサーバによるパラメータセッティング動作の結果としてセットされることは、要件ではない。これは、ウェブページ上のスライサパーツがワークブック内で定義されるパラメータのサブセットをマッピングする場合に発生する可能性がある。この場合には、ワークブック内の追加のパラメータは、そのデフォルトセル値を維持する。
【０１１２】
本発明の例示的な非限定的実施形態では、ワークブックがＣＳによってロードされる時に、ＣＳは、そのワークブック内で定義されたパラメータが、それでもパラメータであることについて定義された判断基準を満足するかどうかをチェックする。この条件が満足されない場合には、ＣＳはエラーを返す。このチェックは、アプリケーションサーバがセットすることを試みたパラメータだけではなく、ワークブック内のすべてのパラメータを包含する。パラメータであることに関する判断基準を、たとえば、何がパラメータであるかに関するシステムの確信とパラメータをセットする際のユーザの柔軟性とのバランスをとることなど、システムの所望の特性に基づいてさまざまにセットできることを了解することができる。
【０１１３】
ＣＳの計算エンジンによるパラメータのセッティングおよび取出しに関して、パラメータのセッティングは、セル内の値を変更し、ワークブックの現在の計算モード（手動、自動）に依存して、ワークブックは、計算するまたは計算しないのいずれかになる。
【０１１４】
例示的な非限定的スクリーンショットシーケンス
図５Ａから５Ｋに、ｇｒｏｗｔｈと呼ばれる変数（たとえば、銀行口座の利率）に基づいて売上を予測するワークブックに関するウェブパブリッシング経験に関連する本発明の威力を示す例示的（非限定的）なＵＩスクリーンショットの例示的なシーケンスを示す。
【０１１５】
図５Ａでは、ワークブック５００は、それぞれ「２００５年」売上というラベルを付け、２００５年売上の値２０００ドルを提供するセルＢ３およびＢ４を含む。セルＣ３およびＣ４は、それぞれ、「２００６年」売上というラベルを付け、セルＦ３に示されているように値１０％を有する「ｇｒｏｗｔｈ」という名前の増加率Ｎ２に基づいて値２２００ドルを予想するセルである。セルＢ３、Ｃ３、Ｂ４、およびＣ４は、Ｎ１によって示されるように、集合的に「Ｓａｌｅｓ」と命名される。
【０１１６】
上で説明したようにワークブック５００が作成されたならば、図５Ｂは、ダイアログ／メニュー５０２ａを介して、ユーザがスプレッドシートサーバにワークブックをパブリッシュするプロセスを示し始め、このスプレッドシートサーバから、さらなる許可されたユーザが、ウェブなどのネットワークを介し、ブラウザなどのアプリケーションを介してこのワークブックを見ることができる。図示されているように、５０２ａで、ユーザは、ワークブック５００をウェブサーバにパブリッシュするオプションを選択することができる。
【０１１７】
開始されたならば、流れは図５Ｃに移り、ここで、ダイアログ／メニュー５０２ｂは、ユーザがワークブックのサブセットをパブリッシュすることすなわち、特定のワークシートなど、ワークブック５００の一部が、ワークブック５００がパブリッシュされたならばウェブからアクセス不能になるようにすることを選択できることを示す。たとえば、ワークブック作成者の観点から、ワークシート３に配置されたプロプラエタリ式を共有することが望ましくない可能性があるが、それと同時に、ワークブック作成者が、ワークシート３からの１つまたは複数のパラメータをユーザに公開することを望む場合がある。
【０１１８】
次に、図５Ｄに示されているように、ユーザは、５０２ｃで、ダイアログメニューのパラメータタブを選択することができ、これによって、パラメータとしてワークブック５００のセルを選択する（指定する）ＵＩが表示される。オプションとして、当初に図５Ｅに示された５０２ｄで、ＵＩは、パラメータをどのように定義できるかに従って、ワークブック５００のすべての可能なパラメータを含む。次に、たとえば、図５Ｆに示されているように、増加モデルに従って、ユーザは、５０２ｅで、パラメータとして「ｇｒｏｗｔｈ」を選択している。ｇｒｏｗｔｈは、この例では唯一のパラメータであるが、これは、理解を単純にするためである。当業者は、スプレッドシートモデルおよび式ならびに関連する前提が、極端に複雑になる可能性があり、したがって、数十個以上のパラメータを包含する場合があることを了解することができる。
【０１１９】
５０２ｅでパラメータとしてｇｒｏｗｔｈを選択したので、図５Ｇの５０２ｆに示されているように、ユーザは、主パブリッシングＵＩに戻され、ここでは、ｇｒｏｗｔｈが、パラメータと指定していされたものとして示されている。最後に、図５Ｈに示されているように、５０２ｇで、ユーザは、対応する「パブリッシュ」ＵＩ要素を係合させることによって、文書をスプレッドシートサーバにパブリッシュする。ウェブを介してワークブックを表示するオプションを選択したので、クライアントアプリケーションを介して作成されたワークブック５００は、図５Ｉに示されているように、ウェブワークブック５０４として表示される。ｇｒｏｗｔｈパラメータＰおよびエディットボックスＥＢを含むパラメータのリストＬＰが、ワークブック５０４の右に表示されていることがわかる。前に述べたように、一実施形態で、エディットボックスＥＢのパラメータ値が入力され、適用されるまで、ワークブック５０４の計算および表示を遅延させるすなわち保留することができる。図５Ｉに示された非限定的なスクリーンショットでは、ワークブック５００の作成で示された値が、デフォルトで表示されている。
【０１２０】
次に、図５Ｊで、ユーザは、エディットボックスＥＢに２０％（図５Ｉの計算および表示で現在使用されている１０％ではなく）という新しい値を入力している。最後に、ユーザは、エディットボックスＥＢに入力された新しい値を適用し、図５Ｋに示されているように、計算サーバが、２０％という新しいパラメータ値に基づいてモデルを再計算し、ワークブック５０６が、ウェブベースの文書を表示するための適当な変換が実行された後に表示される。このケースでは、計画された２００６年の値が、１０％から２０％への増加率の変更に基づいて、２２００ドルから２４００ドルに変更されていることがわかる。したがって、サーバへのスプレッドシート文書のパブリッシュおよび必要に基づく個人へのパラメータの公開の利点がわかる。たとえば、住宅金融専門会社は、さまざまなパラメータ（家の価値、株式価値、年金口座など）のすべてを、パラメータとして入力でき、したがってユーザのために計算を個別に調整できる正味財産カリキュレータをパブリッシュすること望む場合がある。それと同時に、住宅金融専門会社は、そのユーザからそのようなデータを収集し、ユーザに関する全体的なサービスオファリングをよりよく調整することができる。
【０１２１】
パラメータの指定を、本明細書では、いくつかの実施形態でパブリッシング経験に含まれるものとして説明するが、スタンドアローンクライアントアプリケーションも、本発明によるパラメータの指定から利益を得る。したがって、本発明は、ウェブへのワークブックのパブリッシュのシナリオに限定されると解釈されてはならず、そうではなく、特許請求の範囲で定義されるものとして解釈されなければならない。
【０１２２】
図６は、前述のシーケンスに似ているが、ある種の限定する詳細のない、流れ図である。たとえば、６００で、ユーザは、ワークブックを作成するか編集することを選択し、６１０で、ユーザは、ワークブックのパラメータを指定するユーザインターフェースコンポーネントを呼び出し、この指定は、ステップ６２０で行うことができる。オプションで、ワークブックを、ウェブを介するスプレッドシート文書のレンダリングのためにスプレッドシート文書ウェブサーバにパブリッシュすることができる。将来に、指定されたパラメータを含むスプレッドシート文書が、クライアントによって開かれるか、ウェブレンダラを介して表示されるかにかかわりなく、プライベートＡＰＩが、６３０で動作して、スプレッドシート文書によって表される基礎になるモデルをパラメータ化するパラメータのリストを含むパラメータ情報をスプレッドシート文書から発見し、抽出する。次に、文書は、６４０で表示の準備ができ、ここで、パラメータリストが公開され、ユーザインターフェースコンポーネントが、パラメータリスト内のパラメータを編集するために提示される。次に、オプションで、６５０で、ワークブック自体を、ワークブックを定義するパラメータの値の初期セットに基づく計算を介して表示することができ、あるいはその代わりに、上で説明したように、スプレッドシート文書に関連するすべての現在の情報が受け取られるまで、そのような計算を保留することができる。６６０で、ユーザは、パラメータリスト内のパラメータのうちの１つまたは複数を編集し、スプレッドシートのモデルへの新しいパラメータ値の適用を要求することができる。したがって、６７０で、計算エンジンは、ユーザによって入力された新しいパラメータ値に基づいてスプレッドシート文書を再計算する（あるいは、保留された場合には計算する）。
【０１２３】
例示的なインターフェース実施態様
複数のコンピュータの間での、本発明の技法による、２つのコンピュータの間で共有されるパラメータデータなどのデータのすべての交換に関して、ハードウェアおよび／またはソフトウェアで実施でき、関連するアプリケーションおよび要求されまたは提供されるサービスに従ってある形でデータを受け取り、送り、かつ／または処理するように動作する、各コンピュータ上でのさまざまな動作を処理するインターフェースがある。本発明によるマークアップデータの圧縮および圧縮解除のシステムおよび方法の任意の部分を達成しまたは実施するために１つまたは複数のインターフェースオブジェクトを提供できる範囲まで、本発明がそのような実施形態のすべてを含むことが意図され、したがって、本発明を実施するか実行する時に提供するか利用することのできる複数の種類のインターフェースの全般的な説明を、下に続ける。
【０１２４】
プログラミングインターフェース（またはより単純に、インターフェース）は、コードの１つまたは複数のセグメントが、コードの１つまたは複数の他のセグメントによって提供される機能性と通信するかこれにアクセスすることを可能にする、任意の機構、プロセス、プロトコルとみなすことができる。その代わりに、プログラミングインターフェースを、他のコンポーネントの１つまたは複数の機構、メソッド、関数呼出し、モジュールなどに通信的に結合できる、システムのコンポーネントの１つまたは複数の機構、メソッド、関数呼出し、モジュール、オブジェクトなどとみなすことができる。前の文での用語「コードのセグメント」は、１つもしくは複数の命令またはコードの行を含むことを意図され、適用される用語法、コードセグメントが別々にコンパイルされるかどうか、コードセグメントがソースコード、中間コード、またはオブジェクトコードのどれとして提供されるのか、コードセグメントがランタイムシステムまたはプロセスのどちらで利用されるのか、コードセグメントが同一のまたは異なるマシンに配置される、または複数のマシンにまたがって分散されるのどちらであるのか、あるいは、コードのセグメントによって表される機能性が完全にソフトウェアで、完全にハードウェアで、またはハードウェアおよびソフトウェアの組合せのどれで実施されるかにかかわりなく、たとえばコードモジュール、オブジェクト、サブルーチン、関数などを含む。
【０１２５】
概念的に、プログラミングインターフェースは、図１４Ａまたは図１４Ｂに示されているように、包括的に見ることができる。図１４Ａは、第１および第２のコードセグメントがそれを介して通信する導管としてインターフェース、インターフェース１を示す。図１４Ｂは、システムの第１および第２のコードセグメントが媒体Ｍを介して通信することを可能にする、インターフェースオブジェクトＩ１およびＩ２（第１および第２のコードセグメントの一部であってもなくてもよい）を含むものとしてインターフェースを示す。図１４Ｂの図では、インターフェースオブジェクトＩ１およびＩ２を、同一システムの別々のインターフェースと考えることができ、オブジェクトＩ１およびＩ２ならびに媒体Ｍがインターフェースを含むと考えることもできる。図１４Ａおよび１４Ｂは、両方向フローと、フローの両側のインターフェースを示すが、ある種の実施態様は、一方向の情報フローのみを有することができ（または、下で説明するように情報フローなし）、あるいは、片側だけにインターフェースオブジェクトを有することができる。限定ではなく例として、アプリケーションプログラミングインターフェース（ＡＰＩ）、エントリポイント、メソッド、関数、サブルーチン、リモートプロシージャコール、およびコンポーネントオブジェクトモデル（ＣＯＭ）インターフェースなどの用語は、プログラミングインターフェースの定義の中に含まれる。
【０１２６】
そのようなプログラミングインターフェースの諸態様は、第１コードセグメントが情報（「情報」は、その最も広義の意味で使用され、データ、コマンド、要求などを含む）を第２コードセグメントに送るメソッドと、第２コードセグメントが情報を受け取るメソッドと、情報の構造、シーケンス、構文、編成、スキーマ、タイミング、および内容とを含むことができる。これに関して、基礎になるトランスポート媒体自体は、媒体が有線、無線、またはこの両方の組合せのいずれであれ、情報がインターフェースによって定義される形でトランスポートされる限り、インターフェースの動作にとって重要でないものとすることができる。ある種の状況で、情報は、従来の意味で一方向または両方向で渡されない場合がある。というのは、情報転送を、別の機構を介する（たとえば、コードセグメントの間の情報フローとは別々の、バッファ、ファイルなどに置かれた情報）か、あるコードセグメントが第２コードセグメントによって実行される機能性に単純にアクセスする時など、存在しないのいずれかとすることができるからである。これらの態様のいずれかまたはすべてが、たとえばコードセグメントが疎結合構成または密結合構成どちらのシステムの一部であるかに依存してなど、所与の状況で重要である場合があり、したがって、このリストは、例示的であり非限定的であると考えられなければならない。
【０１２７】
プログラミングインターフェースのこの概念は、当業者に既知であり、本発明の前述の詳細な説明から明瞭である。しかし、プログラミングインターフェースを実施する他の形があり、明示的に除外されない限り、これらも、本明細書に添付の特許請求の範囲に包含されることが意図されている。そのような他の形は、図１４Ａおよび１４Ｂの単純すぎる図より洗練され、またはより複雑であるように見える場合があるが、それでも、同一の全体的な結果を達成するために、類似する機能を実行する。これから、プログラミングインターフェースのいくつかの例示的な代替実施態様を短く説明する。
【０１２８】
Ａ．ファクタリング
あるコードセグメントから別のコードセグメントへの通信は、その通信を複数の別個の通信に分解することによって間接的に達成することができる。これを、図１５Ａおよび１５Ｂに概略的に示す。図からわかるように、いくつかのインターフェースを、機能性の分割可能なセットに関して説明することができる。したがって、数学的に２４すなわち２×２×３×２をもたらすことができるのと同様に、図１４Ａおよび１４Ｂのインターフェース機能性を、同一の結果を達成するためにファクタリング（因数分解）することができる。したがって、図１５Ａに示されているように、同一の結果を達成しながら、インターフェース、インターフェース１によって提供される機能を副分割して、インターフェースの通信を複数のインターフェース、インターフェース１Ａ、インターフェース１Ｂ、インターフェース１Ｃなどに変換することができる。図１５Ｂに示されているように、同一の結果を達成しながら、インターフェースＩ１によって提供される機能を、複数のインターフェースＩ１ａ、Ｉ１ｂ、Ｉ１ｃなどに副分割することができる。同様に、第２コードセグメントの、第１コードセグメントから情報を受け取るインターフェースＩ２を、複数のインターフェースＩ２ａ、Ｉ２ｂ、Ｉ２ｃなどにファクタリングすることができる。ファクタリングする時には、第１コードセグメントに含まれるインターフェースの個数が、第２コードセグメントに含まれるインターフェースの個数と一致する必要はない。図１５Ａおよび１５Ｂのどちらの場合でも、インターフェース、インターフェース１およびＩ１の機能的趣旨は、それぞれ図１４Ａおよび１４Ｂと同一のままである。インターフェースのファクタリングは、結合、可換、および他の数学的プロパティにも従い、ファクタリングを理解することがむずかしくなる可能性がある。たとえば、動作の順序付けが重要でない場合があり、その結果、あるインターフェースによって実行される機能を、そのインターフェースに達する前に、別のコードまたはインターフェースによって、あるいはシステムの別々のコンポーネントによって、良好に実行することができる。さらに、プログラミング技術の当業者は、同一の結果を達成する異なる関数呼出しを行うさまざまな形があることを了解することができる。
【０１２９】
Ｂ．再定義
いくつかの場合に、所期の結果を達成しながら、プログラミングインターフェースのある種の態様（たとえば、パラメータ）を無視し、追加し、または再定義することが可能である場合がある。これを図１６Ａおよび１６Ｂに示す。たとえば、図１４Ａのインターフェース、インターフェース１が、関数呼出しＳｑｕａｒｅ（ｉｎｐｕｔ，ｐｒｅｃｉｓｉｏｎ，ｏｕｔｐｕｔ）すなわち、３つのパラメータ、ｉｎｐｕｔ（入力）、ｐｒｅｃｉｓｉｏｎ（精度）、およびｏｕｔｐｕｔ（出力）を含み、第１コードセグメントから第２コードセグメントに発行される呼出しを含むと仮定する。中央のパラメータｐｒｅｃｉｓｉｏｎが、所与のシナリオで関係ない場合に、図１６Ａに示されているように、これを無視することができ、あるいは、無意味な（この状況で）パラメータに置換することさえできる。関係ない追加パラメータを追加することもできる。どの場合でも、ｉｎｐｕｔが第２コードセグメントによって二乗された後にｏｕｔｐｕｔが返される限り、二乗の機能性を達成することができる。ｐｒｅｃｉｓｉｏｎは、コンピューティングシステムのある下流のまたは他の部分への意味のあるパラメータであるかもしれないが、ｐｒｅｃｉｓｉｏｎが、二乗を計算するという狭い目的に関して必要でないことが認められたならば、これを置換するか無視することができる。たとえば、有効な精度値を渡すのではなく、誕生日などの無意味な値を、結果に悪影響を及ぼさずに渡すことができる。同様に、図１６Ｂに示されているように、インターフェースＩ１を、インターフェースへのパラメータを無視するか追加するように再定義されたインターフェースＩ１’によって置換することができる。インターフェースＩ２を、同様に、不必要なパラメータまたは他所で処理できるパラメータを無視するように再定義されたインターフェースＩ２’として再定義することができる。ここでのポイントは、いくつかの場合に、プログラミングインターフェースが、パラメータなど、ある目的のためには必要でない態様を含む場合があり、したがって、それらを無視するか再定義し、あるいは他の目的のために他所で処理することができることである。
【０１３０】
Ｃ．インラインコーディング
２つの別々のコードモジュールの機能性の一部またはすべてをマージし、それらの間の「インターフェース」が形を変化させるようにすることが、実現可能である場合もある。たとえば、図１４Ａおよび１４Ｂの機能性を、それぞれ図１７Ａおよび１７Ｂの機能性に変換することができる。図１７Ａでは、図１４Ａの以前の第１コードセグメントおよび第２コードセグメントが、その両方を含む１つのモジュールにマージされている。この場合に、コードセグメントは、それでも互いに通信することができるが、インターフェースは、単一のモジュールにより適切な形に適合させることができる。したがって、たとえば、形式的なＣａｌｌステートメントおよびＲｅｔｕｒｎステートメントは、もはや不要である可能性があるが、インターフェース、インターフェース１に準ずる類似する処理または応答が、まだ有効である場合がある。同様に、図１７Ｂに示されているように、図１４ＢからのインターフェースＩ２の一部（またはすべて）を、インターフェースＩ１にインラインで記述して、インターフェースＩ１”を形成することができる。図示されているように、インターフェースＩ２は、Ｉ２ａおよびＩ２ｂに分割され、インターフェース部分Ｉ２ａは、インターフェースＩ１”を形成するためにインターフェースＩ１と共にインラインでコーディングされている。具体的な例について、図１４ＢからのインターフェースＩ１が、関数呼出しｓｑｕａｒｅ（ｉｎｐｕｔ，ｏｕｔｐｕｔ）を実行し、これがインターフェースＩ２によって受け取られ、インターフェースＩ２は、ｉｎｐｕｔを用いて渡された値を第２コードセグメントによって処理（二乗）した後に、二乗された結果をｏｕｔｐｕｔを用いて戻して渡すと考えられたい。その場合に、第２コードセグメントによって実行される処理（ｉｎｐｕｔを二乗すること）を、インターフェースへの呼出しなしで、第１コードセグメントによって実行することができる。
【０１３１】
Ｄ．ディボース（ｄｉｖｏｒｃｅ）
あるコードセグメントから別のコードセグメントへの通信は、その通信を複数の別個の通信に分解することによって間接的に達成することができる。これを、図１８Ａおよび１８Ｂに概略的に示す。図１８Ａに示されているように、１つまたは複数のミドルウェア（機能性および／またはインターフェース機能をオリジナルインターフェースから分離（ディボース）するので、ディボースインターフェース）が、第１インターフェース、インターフェース１での通信を、異なるインターフェース、この例ではインターフェース、インターフェース２Ａ、インターフェース２Ｂ、およびインターフェース２Ｃに従わせるために変換するために設けられる。これは、たとえば、たとえばインターフェース１プロトコルに従ってオペレーティングシステムと通信するように設計されたアプリケーションのインストールされたベースがあるが、その後、オペレーティングシステムが異なるインターフェース、この例ではインターフェース、インターフェース２Ａ、インターフェース２Ｂ、およびインターフェース２Ｃを使用するように変更された場合に、行うことができる。ポイントは、第２コードセグメントによって使用されるオリジナルインターフェースが、もはや第１コードセグメントによって使用されるインターフェースと互換ではなくなるように変更され、したがって、媒介物が、古いインターフェースと新しいインターフェースとを互換にするために使用されることである。同様に、図１８Ｂに示されているように、インターフェースＩ１からの通信を受け取るディボースインターフェースＤＩ１、ならびにたとえばディボースインターフェースＤＩ２と共に働くが同一の機能的結果をもたらすように再設計されたインターフェースＩ２ａおよびＩ２ｂにインターフェース機能性を送るディボースインターフェースＤＩ２と共に、第３コードセグメントを導入することができる。同様に、ＤＩ１およびＤＩ２は、一緒に働いて、図１４ＢのインターフェースＩ１およびＩ２の機能性を新しいオペレーティングシステムに変換すると同時に、同一のまたは類似する機能的結果を提供することができる。
【０１３２】
Ｅ．リライト
もう１つの可能な変形形態は、同一の全体的結果を達成する別の何かを用いてインターフェース機能性を置換するようにコードを動的にリライトすることである。たとえば、中間言語（たとえば、Ｍｉｃｒｏｓｏｆｔ  ＩＬ、Ｊａｖａ（登録商標）  ＢｙｔｅＣｏｄｅなど）で提示されるコードセグメントが、実行環境（．Ｎｅｔフレームワーク、Ｊａｖａ（登録商標）ランタイム環境、または他の類似するランタイムタイプ環境によって提供される実行環境など）内のジャストインタイム（ＪＩＴ）コンパイラまたはインタープリタに供給されるシステムを設けることができる。ＪＩＴコンパイラは、第１コードセグメントから第２コードセグメントへの通信を動的に変換する、すなわち、これらを第２コードセグメント（オリジナルまたは異なる第２コードセグメントのいずれか）によって要求されるものとすることができる異なるインターフェースに変換するように記述することができる。これを、図１９Ａおよび１９Ｂに示す。図１９Ａからわかるように、この手法は、上で説明したディボースシナリオに類似する。これは、たとえば、インターフェース１プロトコルに従ってオペレーティングシステムと通信するように設計されたアプリケーションのインストールされたベースがあるが、その後、オペレーティングシステムが異なるインターフェースを使用するように変更された場合に、行うことができる。ＪＩＴコンパイラは、通信をオンザフライでインストールされたベースアプリケーションからオペレーティングシステムの新しいインターフェースに従わせるのに使用することができる。図１９Ｂに示されているように、インターフェースを動的にリライトするこの手法は、インターフェースを動的にファクタリングし、または他の形で変更するために適用することもできる。
【０１３３】
代替実施形態を介するインターフェースと同一のまたは類似する結果を達成する上で説明したシナリオを、さまざまな形で、直列におよび／または並列に、あるいは他の介在するコードを用いて、組み合わせることもできることにも留意されたい。したがって、上で提示した代替実施形態は、相互に排他的ではなく、図１４Ａおよび１４Ｂで提示した包括的シナリオと同一のまたは同等のシナリオを作るために混合し、一致させ、組み合わせることができる。ほとんどのプログラミング構造と同様に、本明細書で説明されない可能性があるインターフェースの同一のまたは類似する機能性を達成するが、それでも、本発明の趣旨および範囲によって表される、他の類似する形があることにも留意されたい、すなわち、それが、少なくとも部分的に、インターフェースの価値の基礎になるインターフェースによって表される機能性であり、それによって使用可能にされる有利な結果であることに留意されたい。
【０１３４】
本発明を実施する複数の形、たとえば、アプリケーションおよびサービスが本発明のワークブックパラメータを提供し、使用可能にするシステムおよび方法を使用することを可能にする、適当なＡＰＩ、ツールキット、ドライバコード、オペレーティングシステム、コントロール、スタンドアローンまたはダウンロード可能なソフトウェアオブジェクトなどがある。本発明は、ＡＰＩ（または他のソフトウェアオブジェクト）の観点から、ならびに本発明によるダウンロードされたプログラムを受け取るソフトウェアオブジェクトまたはハードウェアオブジェクトからの本発明の使用を企図している。したがって、本明細書で説明した本発明のさまざまな実施態様は、完全にハードウェア、部分的にハードウェアおよび部分的にソフトウェア、ならびにソフトウェアの態様を有することができる。
【０１３５】
上で述べたように、本発明の例示的実施形態を、さまざまなコンピューティングデバイスおよびネットワークアーキテクチャに関して説明したが、基礎になる概念を、ワークブックパラメータを有することが望ましい任意のコンピューティングデバイスまたはシステムに適用することができる。たとえば、本発明のアルゴリズム（１つまたは複数）およびハードウェア実施態様を、デバイス上の別々のオブジェクトとして、別のオブジェクトの一部として、再利用可能なコントロールとして、サーバからダウンロード可能なオブジェクトとして、デバイスまたはオブジェクトとネットワークとの間の「媒介者」として、分散オブジェクトとして、ハードウェアとして、メモリ内で、前述のいずれかの組合せとしてなどで、コンピューティングデバイスのオペレーティングシステムに適用することができる。例示的なプログラミング言語、名前、および例が、本明細書でさまざまな選択の代表として選択されたが、これらの言語、名前、および例は、限定的であることを意図されたものではない。当業者は、本発明のさまざまな実施形態によって達成される同一の、類似する、または同等の機能性を達成するオブジェクトコードおよび命名法を提供する多数の形があることを了解するであろう。
【０１３６】
上で述べたように、本明細書で説明したさまざまな技法は、ハードウェアまたはソフトウェア、あるいは適当な場合にこの両方の組合せに関連して実施することができる。したがって、本発明の方法および装置、またはそのある種の態様もしくは部分は、フロッピディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または任意の他の機械可読ストレージ媒体などの有形の媒体で実施されるプログラムコード（すなわち命令）の形をとることができ、ここで、プログラムコードがコンピュータなどの機械にロードされ、その機械によって実行される時に、その機械は、本発明を実践する装置になる。プログラム可能コンピュータでのプログラムコード実行の場合に、コンピューティングデバイスは、一般に、プロセッサ、そのプロセッサによって読み取り可能なストレージ媒体（揮発性および不揮発性のメモリおよび／またはストレージ要素を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを含む。たとえばデータ処理ＡＰＩ、再利用可能コントロール、または類似物の使用を介して、本発明のワークブックパラメータを実施するか利用することのできる１つまたは複数のプログラムは、好ましくは、コンピュータシステムと通信するために高水準手続き指向プログラミング言語または高水準オブジェクト指向プログラミング言語で実施される。しかし、望まれる場合に、プログラム（１つまたは複数）を、アセンブリ言語または機械語で実施することができる。どの場合でも、言語は、コンパイルされる言語または解釈される言語とすることができ、ハードウェア実施態様と組み合わせることができる。
【０１３７】
本発明の方法および装置を、電気配線またはケーブリングを介して、光ファイバを介して、または任意の他の形の伝送を介してなど、ある伝送媒体を介して伝送されるプログラムコードの形で実施される通信を介して実践することもでき、ここで、プログラムコードが、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス（ＰＬＤ）、クライアントコンピュータなどの機械によって受信され、ロードされ、実行される時に、その機械は、本発明を実践する装置になる。汎用プロセッサで実施される時に、プログラムコードは、プロセッサと組み合わされて、本発明の機能性を呼び出すように動作する独自の装置を提供する。さらに、本発明に関連して使用される任意のストレージ技法は、必ず、ハードウェアおよびソフトウェアの組合せとすることができる。
【０１３８】
本発明を、さまざまな図面の好ましい実施形態に関連して説明したが、他の類似する実施形態を使用でき、あるいは、本発明から逸脱せずに、本発明の同一の機能を実行するために、説明された実施形態に対して変更または追加を行うことができることを理解されたい。たとえば、本発明の例示的ネットワーク環境を、ピアツーピアネットワーク化された環境などのネットワーク化された環境の文脈で説明したが、当業者は、本発明がこれに限定されないことと、本願で説明された方法が、ゲーム機、ハンドヘルドコンピュータ、ポータブルコンピュータなど、有線であれ無線であれ、任意のコンピューティングデバイスまたはコンピューティング環境に適用でき、通信ネットワークを介して接続され、ネットワークを介して対話する任意の個数のそのようなコンピューティングデバイスに適用できることとを認めるであろう。さらに、ハンドヘルドデバイスオペレーティングシステムおよび他の特定用途向けオペレーティングシステムを含むさまざまなコンピュータプラットフォームが、特に多数の無線ネットワーク化されたデバイスが増殖し続けているので、企図されていることを強調しなければならない。
【０１３９】
例示的実施形態は、特定のプログラミング言語構造の文脈での本発明の利用に言及するが、本発明は、それに限定されるのではなく、本発明によるワークブックパラメータを提供し、使用可能にする任意の言語で実施することができる。さらに、本発明を、複数の処理チップまたは処理デバイスでまたはこれらにまたがって実施することができ、ストレージを、同様に複数のデバイスにまたがってもたらすことができる。したがって、本発明は、任意の単独の実施形態に限定されてはならず、添付の特許請求の範囲による広がりおよび範囲において解釈されなければならない。
【図面の簡単な説明】
【０１４０】
【図１】本発明を実施できる例示的な非限定的コンピューティングシステム環境を表すブロック図である。
【図２】本発明を実施できる例示的なネットワーク環境を表すブロック図である。
【図３Ａ】本発明のさまざまな実施形態によるスタンドアローンアプリケーションおよびウェブレンダリングサービスを介してスプレッドシート文書をオーサリングし、見る、例示的なクライアントおよびサーバのアーキテクチャを示す図である。
【図３Ｂ】本発明のさまざまな実施形態によるスタンドアローンアプリケーションおよびウェブレンダリングサービスを介してスプレッドシート文書をオーサリングし、見る、例示的なクライアントおよびサーバのアーキテクチャを示す図である。
【図４Ａ】本発明によるワークブックパラメータの指定、発見、およびセッティングのさまざまな態様の例示的な非限定的スクリーンショットを示す図である。
【図４Ｂ】本発明によるワークブックパラメータの指定、発見、およびセッティングのさまざまな態様の例示的な非限定的スクリーンショットを示す図である。
【図４Ｃ】本発明によるワークブックパラメータの指定、発見、およびセッティングのさまざまな態様の例示的な非限定的スクリーンショットを示す図である。
【図５Ａ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｂ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｃ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｄ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｅ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｆ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｇ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｈ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｉ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｊ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図５Ｋ】本発明による、ワークブックのオーサリングおよびパラメータの指定から、文書に関連するパラメータリストの発見、およびパラメータリスト内で示されるパラメータの編集を可能にするウェブを介するワークブックのレンダリングまでの例示的な非限定的スクリーンショットを示す図である。
【図６】本発明に従って、ユーザがどのようにパラメータを指定でき、発見でき、編集できるかを示す例示的な流れ図である。
【図７Ａ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図７Ｂ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図８Ａ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図８Ｂ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図９Ａ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図９Ｂ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図１０Ａ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図１０Ｂ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図１１Ａ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図１１Ｂ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図１２Ａ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図１２Ｂ】本発明による任意のインターフェース（１つまたは複数）の類似するまたは同等の目的（１つまたは複数）を達成するために類似するインターエースコードを提供できる例示的な形を示す図である。
【図１】
2009508237.tif 000005
【図２】
2009508237.tif 000006
【図３Ａ】
2009508237.tif 000007
【図３Ｂ】
2009508237.tif 000008
【図４Ａ】
2009508237.tif 000009
【図４Ｂ】
2009508237.tif 000010
【図４Ｃ】
2009508237.tif 000011
【図５Ａ】
2009508237.tif 000012
【図５Ｂ】
2009508237.tif 000013
【図５Ｃ】
2009508237.tif 000014
【図５Ｄ】
2009508237.tif 000015
【図５Ｅ】
2009508237.tif 000016
【図５Ｆ】
2009508237.tif 000017
【図５Ｇ】
2009508237.tif 000018
【図５Ｈ】
2009508237.tif 000019
【図５Ｉ】
2009508237.tif 000020
【図５Ｊ】
2009508237.tif 000021
【図５Ｋ】
2009508237.tif 000022
【図６】
2009508237.tif 000023
【図７Ａ】
2009508237.tif 000024
【図７Ｂ】
2009508237.tif 000025
【図８Ａ】
2009508237.tif 000026
【図８Ｂ】
2009508237.tif 000027
【図９Ａ】
2009508237.tif 000028
【図９Ｂ】
2009508237.tif 000029
【図１０Ａ】
2009508237.tif 000030
【図１０Ｂ】
2009508237.tif 000031
【図１１Ａ】
2009508237.tif 000032
【図１１Ｂ】
2009508237.tif 000033
【図１２Ａ】
2009508237.tif 000034
【図１２Ｂ】
2009508237.tif 000035
【国際調査報告】
2009508237.tif 000036
2009508237.tif 000037