Google デスクトップ
 Google デスクトップ サイドバーガジェット入門



開発者向けフォーラム

SDK のダウンロード

ガジェットの送信

デスクトップ ブログ (英語)

目次


はじめに

Google デスクトップ Google ガジェット API には、JavaScript や VBScript などのスクリプト言語でサイドバーの ガジェット (旧プラグイン) を作成するためのオブジェクトやメソッドが含まれています。 このガイドでは、Google デスクトップガジェット作成ツールでこの API を使用してガジェットを作成する方法を説明します。 作成ツールは統合された開発環境で、ドラッグ アンド ドロップ コンポーネントを使用してガジェットのユーザー インターフェースを設計したり、サイドバー以外の場所でガジェットをテストすることができます。

このガイドには、インデックスクエリアクション、またはイベント API などの、Google デスクトップ API のガジェット以外の情報やスクリプトベース以外の情報は記載されていません 。 これらの API の詳細については、リンク先のドキュメントを参照してください。

デスクトップのスクリプトベースのガジェットは、下記のファイルおよびパッケージで構成されます。

  • ガジェットに関するメタ情報を含む gadget.gmanifest XML ファイル。
  • ガジェットのメイン ビューを定義する main.xml ファイル。 ガジェットの表示ウィンドウを構成する UI やオブジェクトからなるビュー
  • ガジェットのオプションのビューを定義する options.xml ファイル (任意)。
  • ガジェットの機能を実行するために必要な JavaScript または VBScript のコードを含むファイル。
  • ボタン、チェックボックスなどのユーザー インターフェース要素、ガジェットで表示する画像、またはガジェットに関連付けるアイコンなどで使用する画像ファイル。
  • ガジェットの UI で使用する各言語用のフォルダおよびファイル (任意)。

作成ツールでは、ファイルの作成後にすべてのファイルがガジェット名.gg ファイルに圧縮されます。.ggGoogle Gadget を意味しています。 作成ツールを使用しない場合は、ファイルを圧縮してからファイル名のサフィックスを .gg に変更します。

ガジェットを配布するには、http://desktop.google.co.jp/pluginsubmit?hl=ja またはその他の方法により、この .gg ファイルを送信します。

ユーザーが .gg ファイルベースのガジェットをインストールすると、Google Desktop のインストーラが gadget.gmanifest ファイルの情報を使用して、ファイルを解凍し、インストールおよび登録を行います。

デスクトップ 4.0 より前のバージョンでは .gg ファイルを処理できないため、 バージョン 4.0 より前のデスクトップを使用するユーザーは .gg 形式のガジェットは使用できません。 ただし、以前に作成したプラグインを Google デスクトップ 4.0 用のガジェットに変換することができます。変換するには、必要な .xml ファイルと .gmanifest ファイルを作成し、コードを一部修正します。

Google デスクトップガジェット作成ツールを使用して、スクリプトベースのサイドバーガジェットを開発および配信する手順は下記のとおりです。

  1. Google デスクトップ SDK から designer.exe を実行して、Google デスクトップガジェット作成ツールを起動します。
  2. [ファイル]、[プロジェクトの新規作成] の順にクリックします。
  3. ファイル ウィンドウで [プロジェクト設定] をダブルクリックして [プロジェクト設定] ダイアログを表示し、 必要な情報をすべて入力します。 作成ツールでは、この情報を使用して gadget.gmanifest ファイルを作成します。
  4. UI 要素をドラッグ アンド ドロップして、作成ツールの表示ウィンドウでガジェットの UI を作成します。
  5. 複数のボタン用画像など、必要に応じてプロジェクトの UI 画像ファイルを追加します。 画像を追加するには、Windows Explorer などの外部のファイル ブラウザを使用します。 該当するファイルをプロジェクト フォルダに追加するか、既存のファイルのコンテンツを上書きします。
  6. UI 要素を順番に選択し、ガジェットに合わせて プロパティおよびイベント値を設定します。 Cntl-S を押して、編集内容を保存します。
  7. 必要に応じて、[プロジェクト]、 [オプション ビューの追加] の順にクリックし、options.xml で定義したオプション ビューをガジェットに追加できます。 オプション ビューを追加するには、手順 4 から 6 を繰り返します。
  8. main.js ファイルを開き (または、別のスクリプト ファイルを作成して開くこともできます)、UI 要素イベントが呼び出す関数を作成します。 Cntl-S を押して、編集内容を保存します。
  9. ガジェットをテストします。
    1. 上部にある [プレビュー] タブをクリックし、完成したガジェットを表示ウィンドウに表示します。
    2. [表示]、[デバッグ コンソール] の順にクリックし、デバッグ コンソールを開きます。 必要なメッセージを表示するよう設定を調整し、表示ウィンドウとデバッグ コンソールの両方が完全に表示されるよう作成ツールのウィンドウのサイズを調整します。
    3. 実際にガジェットを使用して機能をテストします。
    4. エラーが発生した場合は、コードまたは UI のプロパティなどを修正します。 修正を保存してから [表示]、[更新] の順にクリックして、ガジェットを最初の状態にリセットします。 エラーが発生しなくなるまで、テストを繰り返し行います。
    5. エラーが発生しない場合は、[表示]、[更新] の順にクリックして、ガジェットを最初の状態にリセットします。 作成したガジェットが問題なく機能するようになるまで、テストを繰り返し行います。
  10. [プロジェクト]、[パッケージの作成] の順にクリックして、プロジェクトのすべてのファイルを プロジェクト名.gg ファイルに圧縮します。
  11. .gg ファイルを http://desktop.google.co.jp/pluginsubmit?hl=ja から送信して、ガジェットを配布します。

ガジェットをテストする前などは特に、作業のたびにファイルを保存するようにしてください。ファイルを保存するには、Cntl-S を押すか、[ファイル]、[保存] の順にクリックします。

作成ツールには、ファイルをプロジェクト、フォルダ、またはサブフォルダに追加する機能はありませんのでご注意ください。 [ファイル]、[プロジェクトの新規作成] の順にクリックすると、最初にファイル ウィンドウに表示されるように、いくつかのファイルが作成されますが、作成ツールを使用してガジェットのフォルダにファイルを追加または削除することはできません。

プロジェクト フォルダからファイルを追加または削除するには、Windows Explorer などの外部のファイル ブラウザ ツールを使用する必要があります。 これは、ガジェットに関連付ける大きいアイコンを含む plugin_large.gif など、ガジェット作成ツールで作成したファイルのコンテンツを上書きする場合も同様です。


スタート ガイド

Google デスクトップガジェット作成ツールを起動するには、Google デスクトップ SDK に含まれている designer.exe を実行します。 最初、作成ツールは右のように表示されます。

作成ツールの起動時

作成ツールではガジェットをプロジェクトとして参照します。 このため、新しいガジェットを作成するには、下記の手順を行います。

  1. [ファイル] メニューの [プロジェクトの新規作成] をクリックします。
  2. 右のようなダイアログが表示されます。
  3. 下部にある [ファイル名:] フィールドにガジェットの名前を入力します。
  4. [保存] ボタンをクリックします。

[新しいプロジェクト名] ダイアログ

ガジェットに名前を付けると、作成ツールでプロジェクト用のフォルダといくつかのファイルおよびフォルダが作成されます (詳細については、「ファイル ウィンドウとファイル」を参照してください)。 このとき、作成ツールのウィンドウは右のように表示されます。

作成ツール ウィンドウ

[プロジェクト設定] ダイアログと gadget.gmanifest ファイル

[プロジェクト設定] ダイアログを開くには、ファイル ウィンドウの [プロジェクト設定] をダブルクリックします。 このダイアログでは、ガジェットに関する基本的な情報を入力します。作成ツールでは、この情報を使用して、gadget.gmanifest ファイルを作成します。

[プロジェクト設定] ダイアログ

gadget.gmanifest ファイル

必須の gadget.gmanifest ファイル (XML 形式) では、ガジェットを説明するメタデータと、ガジェットの作成前にインストールする必要があるコンポーネントを指定します。 このファイルのコンテンツの多くは、[プロジェクト設定] ダイアログで指定できますが、手動で編集することもできます。

manifest ファイルのコンテンツは <gadget> 要素で構成され、この要素のパラメータ minimumGoogleDesktopVersion では、このガジェットを実行できる最も古い Google デスクトップのバージョンを指定します。 要素には、必須の <about> 要素とオプションの <install> 要素があります。

<about> 要素には、下記のサブ要素を含めることができます。

  • <id> : ガジェットの CLSID。 必須。
  • <name> : ガジェットの名前。必須。
  • <description> : ガジェットの機能の簡単な説明。 必須。
  • <version> : ガジェットのバージョン番号。
  • <author> : ガジェットの作成者。 必須。
  • <authorEmail> : 作成者の連絡先のメールアドレス。
  • <authorWebsite> : 作成者のウェブサイトの URL。
  • <copyright> : 著作権情報。
  • <aboutText> : ガジェットの [概要] ダイアログに表示するテキスト。
  • <smallIcon> : ガジェットのタイトル バーに表示する 12×12 ピクセルのアイコン。
  • <icon> : ガジェットの [概要] ダイアログとアラート UI (ガジェットでサポートされている場合) に表示する 32×32 ピクセルのアイコン。
  • <eventAPI> : 含めた場合 (値を取らないため <eventAPI /> の方が適切) は、ガジェットで Google デスクトップ イベント API を使用できます。 登録は自動的に処理されます。
  • <displayAPI usersNotifier="true"/> : usersNotifiertrue に設定されている場合は、サイドバーの UI 通知が有効になります。 登録は自動的に処理されます。
  • <queryAPI allowModifyIndex="true"/> : allowModifyIndextrue に設定されている場合は、ガジェットで Query API とインデックス通知を使用できます。 登録は自動的に処理されます。

<id><name>、および <description> 要素には必ず値を指定してください。 また、<version><author><authorEmail><authorWebsite><copyright><aboutText><smallIcon>、および <icon> 要素も値を指定することを強くお勧めします。 <authorEmail></authorEmail> などの要素は値を指定しないことも 可能ですが、指定することをお勧めします。

下記に、デジタル時計ガジェットの gadget.gmanifest ファイルの例を示します。



<gadget minimumGoogleDesktopVersion="4.2006.505.0">
  <about>
    <id>5EBA73D8-8A97-47de-A373-2BCBDCA3D539</id>

    <version>1.0.0.0</version>
    <author>Google</author>
    <authorEmail></authorEmail>
    <authorWebsite>http://desktop.google.com/plugins.html</authorWebsite>

    <copyright>Copyright (c) 2006 Google Inc.</copyright>
    <description>デジタル時計で時刻を一目で確認</description>
    <aboutText>&strAboutText</aboutText>
    <smallIcon>gadget_small.gif</smallIcon>

    <icon>gadget_large.gif</icon>
  </about>
</gadget>

<gadget> 要素内には必須の <about> 要素のほか、オプションの <install> 要素を指定できます。この要素では、フォントなどガジェットの作成前にインストールする必要のあるパッケージ コンポーネントをリストします。 下記に例を示します。


<install>
  <font src="mcfont.ttf"/>
</install>

ファイル ウィンドウとファイル

ファイル ウィンドウには、ガジェットの配布に使用する ガジェット名.gg ファイルに圧縮するディレクトリやファイルが表示されます。 トップレベルのディレクトリ名は、[プロジェクト設定] ダイアログで指定した名前となります。 ディレクトリには最初の状態で 2 個のディレクトリと 5 個のファイルが含まれています。

  • 1033 ディレクトリ: 1033 は英語 (アメリカ) の言語 ID です。 このディレクトリには strings.xml ファイルがあり、ここにガジェットの UI で使用する英語 (アメリカ) 版のすべての文字列を保存します。 詳細およびその他の言語を使用する方法については、このガイドの「グローバル化」を参照してください。
  • [プロジェクト設定]: ダブルクリックすると [プロジェクト設定] ダイアログが表示されます。
  • main.js: デフォルトの JavaScript ファイルで、ガジェットの動作およびイベント処理を実行する関数を作成します。 ダブルクリックすると、表示ウィンドウでファイルを開いて編集できるようになり、このビューのタブが表示ウィンドウ エリアの上部に追加されます。 ファイルの編集が終わったら、[ファイル]、[保存] の順にクリックするか、Cntl+S を押して、編集内容を保存します。
  • main.xml: ガジェットの UI レイアウトまたはビューを定義する XML ファイルです。 このエントリをダブルクリックすると、表示ウィンドウの上部にある [main.xml] タブを押した場合と同じように、表示ウィンドウに main.xml のコンテンツが表示されます。 UI 要素を表示ウィンドウのメイン ビューにドラッグ アンド ドロップしてプロパティ値を設定すると、このファイルのコンテンツも同じように変更されます。 ただし、このファイルを表示ウィンドウから直接編集することはできません。 このファイルを編集するには、Emacs、vim、Notepad などの外部のファイル エディタを使用する必要があります。
  • plugin_large.gif: ガジェットに関連付ける大きいアイコンの画像を含むファイルです。 ガジェットで使用する大きいアイコン (32×32 ピクセル) を含む同じ名前のファイルでこのファイルを上書きします。
  • plugin_small.gif: ガジェットに関連付ける小さいアイコンの画像を含むファイルです。 ガジェットで使用する小さいアイコン (12×12 ピクセル) を含む同じ名前のファイルでこのファイルを上書きします。
  • stock_images ディレクトリ: ボタンやチェックボックスなど、既定の UI コンポーネントの画像ファイルが含まれます。 通常、これらのファイルは、独自の画像ファイルで置き換えるか、コンテンツに独自の画像を含めて上書きします。

ファイル ウィンドウに表示されるファイルのコンテンツを追加、削除、コピーするには、Windows Explorer などの、作成ツール以外のファイル ブラウザを使用する必要があります。 ファイル ウィンドウはガジェットのフォルダのコンテンツを操作するのではなく、表示するためのものです。

ファイル ウィンドウ

表示ウィンドウ

中央の表示エリアには、最初の状態で灰色の四角い画面の中に白色の四角形が表示されています。 白色のエリアはガジェットの現在の外観で、view オブジェクト全体を表しています。view オブジェクトは XML ファイルにあり、ガジェット全体の外観を表します。 ガジェットの UI 要素を定義せずに作成ツールを起動した場合、表示ウィンドウは右のスクリーンショットのように空白で表示されます。 この白色のエリアにコンテンツを追加すると、サイズなどの view オブジェクト全体のプロパティを変更できるようになります。

表示ウィンドウ

タブ

ウィンドウの中心にある表示ウィンドウ エリアには、最初の状態で上部と下部に 2 つずつ、合計 4 つのタブが表示されています。 ファイル ウィンドウからファイルを開き、main.js タブを上部に追加する方法については、既に説明したとおりです。 ここでは、上部にタブを追加または削除する別の方法について説明します。

  • 上部のタブ:
    • main.xml: このファイルを選択すると、表示ウィンドウ エリアにガジェットの main.xml ファイルのコンテンツが表示されます。 選択した下部のタブに応じて、XML コンテンツにより定義されたガジェットの UI、または実際の XML コードのいずれかが表示されます。
    • プレビュー: ガジェットの UI が表示され、さらに UI 要素に関連付けられたスクリプトまたは関数が実行されます。 この機能を使用して、サイドバーおよび Google デスクトップ以外の場所でガジェットを実行してテストすることができます。 たとえば、ガジェットにガジェットの背景色をスペクトラムの次の色に変更するボタンがある場合、プレビュー モードでこのボタンを押すと、機能の記述に問題がなければ、ガジェットの背景色が変更されます。 プレビューが有効になっている場合は、下部のタブは表示されません。
  • 下部のタブ:
    • 作成ツール: ガジェットの実際の UI が表示されます。
    • ソース: ガジェットの UI を定義する XML コードが表示されます。
タブ

書き込みビューの XML ファイル

作成ツールでは、UI 要素をドラッグ アンド ドロップしたり、メイン ビューまたはオプション ビューでプロパティを設定することができます。 これらの操作を行うと、該当のビューについて記述した XML ファイル (main.xml または options.xml) が自動的に更新されます。 XML 要素を追加または削除、プロパティ値を設定した場合も更新されます。

XML ファイルは手動で編集することもできます。 そのため、まず XML ファイルのフォーマットについて説明し、その後で作成ツールを使用してオブジェクトをドラッグ アンド ドロップしたり、プロパティを設定する方法を説明します。

下記の API リファレンスでは、ガジェットで定義できる要素のプロパティ、メソッド、およびイベントとそのビューを一覧で説明します。この場合のビューとはウィンドウの全体的な外観を意味しています。 XML ビュー ファイルでこれらの要素を使用して、ガジェットの UI コンポーネント、レイアウト、および動作を指定できます。 ガジェットのメイン ビューは、main.xml XML ファイルの <view> 要素で定義されています。この要素は、新しくプロジェクトを作成する際に作成ツールで自動的に定義されます。 ガジェットにオプションのビューがある場合は、別の <view> 要素を定義する options.xml ファイルも含める必要があります。 <view> 定義内は XML 要素で、ビューを構成する UI オブジェクトを定義します。 たとえば、main.xml ファイルには下記のような記述が含まれます。

<view width="200" height="200">

<button image="button.png" overImage="button_over.png"
downImage="button_down.png" onclick="button_clicked()"/>

</view>

この記述では、ボタンを含む 200×200 ピクセルのビューを定義しています。 また、関連する button オブジェクトのプロパティを設定して、ボタンの通常の状態、マウスを置いた状態、ボタンを押した状態のそれぞれに異なる画像を指定することもできます。 buttononclick イベントを使用して、ユーザーがボタンをクリックしたときに、別の場所で定義された button_clicked() 関数を呼び出すことができます。

XML でプロパティを指定するには、要素に property="value" を追加します。 要素に event="script" を追加すると、XML でイベント スクリプトレットを指定できます。 DHTML では、name プロパティがある場合のみ、作成したスクリプトから要素を操作できます。 下記に例を示します。

<button name="sample_button" ... />

要素に名前を付けると、スクリプトで要素にアクセスして操作したり、要素に関連付けられているメソッドを呼び出すことができます。

sample_button.property = "新しい値";
sample_button.event = "新しいスクリプト";
sample_button.method();

専用の .jsファイル または .vbs ファイルを含む、.gg ファイル パッケージ以外の場所で定義されたスクリプト関数を使用したり (上記のボタン例で使用した button_clicked() 関数など)、<view> 定義内にスクリプト化された関数を含めることができます。 下記に例を示します。


<view width="200" height="200" onopen="view_onopen()">
 <script language="jscript"><!--
  function view_onopen()
  {
    foo( "bar()", 1000 );
  }

  function bar()
  {
    x = 2 + 2;
  }

 --></script>

 <div background="#FFFFFF" width="200" height="200"/>
</view>

view オブジェクトには、contentArea オブジェクトを 1 つだけ定義できます。 contentArea の詳細については、API リファレンスを参照してください。


ガジェットのイベント処理

ガジェットのイベント モデルは DHTML に似ています。 特に viewbasicElement、およびこれらの下位のオブジェクトなど、一部のオブジェクトについては、下記の API リファレンスで関連するイベントを説明しています。 これらのオブジェクトのイベントの処理方法を指定するには、オブジェクトの XML 定義でイベントと操作時の動作を定義します。 たとえば、view オブジェクトの onmouseover イベントに対する動作を指定するには、下記のように記述します。

<view onmouseover="do_something_when_mouse_is_over;"/>

ここで、do_something_when_mouse_is_over には、alert('mouse over!') などのスクリプトか、view_onmouseover() などのスクリプト ブロックで実行された関数の呼び出しが入ります。

DHTML では、イベントおよびイベントのハンドラに引数は必要ありません。 代わりに、スクリプトでは view.event オブジェクトを使用してイベントに関する情報を取得します。 イベント ファイルは一度に 1 つしか実行されないため、ビューの event オブジェクトには現在実行されているイベントの情報が含まれます。

event.returnValue プロパティを使用して戻り値を設定できます。 DHTML では、この値はイベントのデフォルトの動作を実行するかどうかを判別するブール型となります。 下記に例を示します。

event.returnValue = false; // デフォルトの動作を無効にする
event.returnValue = true; // デフォルトの動作を有効にする
// 戻り値を指定せず、デフォルトの動作を有効にする

特に、event.returnValue プロパティは下記のいずれかとなります。

  • view.event.returnValue = false; //view イベントのデフォルトの動作を無効にする
  • view.event.returnValue = true; //view イベントのデフォルトの動作を有効にする

下記に例を示します。


    <edit onkeypress="edit_onkeypress()"/>
    function edit_onkeypress()
    {
     if( event.keyCode == 'j' ) event.returnValue = false;
    }
    

コントロールがこの edit オブジェクト内にある場合は、キーを押すたびに edit_onkeypress() 関数が呼び出されます。j キーを押すと、event.returnValuefalse に設定されているため、イベントおよびイベントの通常の戻り値がキャンセルされ、j キーを押していないかのように処理されます。その結果、この <edit> 要素では文字 j を入力できなくなります。


4.0 以前のオブジェクト イベントの処理

現在のガジェットオブジェクト セットには、4.0 以前のバージョンのオブジェクトも含まれています。 特に googleTalkcontentItem など、上記のイベント処理モデルとは異なる処理モデルを持つものがあります。 下記の API リファレンスでは、これらのオブジェクトはイベントではなく、イベント ハンドラに関連付けられています。

4.0 以前のオブジェクトのイベントを処理するには、特定のイベントにハンドラ関数を設定する必要があります。 これらのハンドラ関数は、JavaScript または VBScript のブロック内でのみ設定できます。4.0 のオブジェクトのように XML 定義内で設定することはできません。

イベント ハンドラは書き込み専用のため、関数の割り当てのみが可能です。 特定のハンドラを設定していない場合は、関連するイベントに対してデフォルトの動作が実行されます。 API リファレンスでは、各イベント ハンドラのプロトタイプ シグネチャを記載しています。イベント ハンドラに割り当てる関数は、そのプロトタイプのシグネチャと一致している必要があります。

オプションとメニューのサンプル コードの関連部分で、イベント ハンドラの使用方法を検証します。


    //ガジェットプロパティが "Hello World" の例と同じように設定されています。
    // ...
    //ガジェットオブジェクトの onAddCustomMenuItems イベントを
    // スクリプトで定義した関数に関連付けます。
    plugin.onAddCustomMenuItems = AddCustomMenuItems;  // メニュー アイテムを追加するハンドラ    

    // ...

    function AddCustomMenuItems(menu) {
      // さまざまなアイテムをメニュー アイテムとして追加し
			// 選択しているアイテムをテストします
      var itemLayout = options.GetValue("item_layout");
      for (var i = 0; i < menuItems.length; ++i) {
        if (i == itemLayout) {
          menu.AddItem(menuItems[i], gddMenuItemFlagChecked, MenuItemClicked);
        } else {
          menu.AddItem(menuItems[i], 0, MenuItemClicked);
        }
      }    
    }

    // ...
   

ここでは、plugin オブジェクトの onAddCustomMenuItems イベントに AddCustomMenuItems 関数を割り当てています。 割り当てる値は関数名のみで、完全なパラメータ シグネチャを割り当てることはできません。 このイベントは、サイドバーがガジェットのメニューを表示する前に初期化する場合に発生します。

AddCustomMenuItems のプロトタイプは AddCustomMenuItems(menu) であるため、割り当てられた関数も menu オブジェクトの関数を 1 つだけ取ります。


オブジェクトの概要

このセクションでは、さまざまなオブジェクトの使用方法とそれぞれの関係について説明します。

    gadget オブジェクト

gadget は、全体的なガジェットレベルにおいて 2 つの異なる目的で使用されます。

  • gadget.debug メソッドはデバッグ目的で使用し、デバッグ モードでの実行中にデバッグ コンソールに選択した文字列を表示します。

    デバッグ モードで実行するには、ガジェットを解凍し、解凍したファイルの中の gadget.gmanifest ファイルをダブルクリックします。 これにより、ガジェットを開発する際、テストのたびにガジェットを圧縮する必要がなくなります。

    デバッグ メッセージは、gadget.gmanifest をクリックしてフォルダからガジェットを起動した場合のみデバッグ コンソールに表示されます。 ガジェットを .gg ファイルから起動した場合は表示されません。 メッセージは、作成ツールのデバッグ コンソールまたは Google デスクトップ SDK に含まれている gdpconsole.exe に表示されます。

  • gadget.storage メソッドは、ガジェットのパッケージ全体を構成するファイルに対して使用します。 このメソッドにより、パッケージからファイルを抽出または開くことができます。 storage オブジェクトには次のいずれかの filename 引数が渡されます。
    • "foo.xml" は、.gg ファイルのルート フォルダにある foo.xml を探します。 このファイルが見つからない場合は、各言語用のフォルダ (例: 1033\foo.xml) を探します。
    • "subfolder\foo.xml" は、.gg ファイルの subfolder フォルダにある foo.xml を探します。 このファイルが見つからない場合は、各言語用のフォルダの subfolder フォルダ (例: 1033\subfolder\foo.xml) を探します。
    • "c:\bar.xml" は、c:\ ドライブにある bar.xml を探します。 正確なパスを指定する必要があります。

    view オブジェクト

ガジェットの各ウィンドウ全体の外観について view オブジェクトを定義する必要があります。 このオブジェクトは、それぞれ個別の .XML ファイルで定義する必要があります。 作成ツールでは、プロジェクトを作成すると view オブジェクトを設定した main.xml ファイルが自動的に作成されます。 また、options.xml ファイルを作成して、独自の view オブジェクトを設定することもできます。

view オブジェクトのプロパティとメソッドでは、ビュー ウィンドウ全体の動作を定義してアクセスします。 ウィンドウの外観を構成する UI 要素、ウィンドウのサイズ、ユーザーがサイズを変更できるかどうか、スクリプトの実行を管理するタイマー、UI 要素の追加または削除、メッセージまたは確認ボックスの表示などを定義できます。

view オブジェクトのイベントは、このビューが最初に開かれたときや、さまざまなマウス ボタン、キー、サイズ変更、プロパティ値の変更、カーソル アクションなどに基づいて実行されます。

    basicElement および UI オブジェクト

basicElement は、特定のビューの外観を構成するさまざまな UI 要素の親オブジェクトです。 basicElement 自体はインスタンス化されず、下位の UI オブジェクトの共通プロパティやイベントのセットを提供します。

プロパティでは、要素のサイズや位置、要素の名前、鮮明度や透明度、およびその他の一般的な UI 要素のプロパティを指定します。

イベントは、通常 UI オブジェクトに関連付けられるもので、マウスのクリックやホイールのスクロールに関する動作、要素のドラッグまたはドロップ、キーボード フォーカスの移動、キーおよびカーソルの操作などがあります。

定義できる basicElement の下位の要素には下記のものがあります。

  • button: プロパティでボタンにさまざまな画像やステータスを設定できます。
  • checkbox: プロパティでチェックボックスにさまざまな画像やステータスを設定できるほか、チェックボックスのオンまたはオフを判断します。 ボックスがオンまたはオフになるとイベントが実行されます。
  • object: 埋め込み型のウィンドウのない ActiveX コントロールです。 主に Windows Media Player を埋め込む場合に使用します。
  • div: 要素の背景色または画像を設定するために使用します。
  • edit: プロパティでテキスト コンテンツの外観を制御したり、テキスト コンテンツを設定または取得できます。 コンテンツが変更されるとイベントが実行されます。
  • img: プロパティで表示する画像を設定したり、元のサイズを取得できます。 画像のサイズを変更するメソッドもあります。
  • label: プロパティでラベルのテキストの外観や位置、整列を指定できます。
  • a: プロパティでリンクの外観とリンク先 URL を指定できるリンク オブジェクトです。
  • progressBar: プロパティでステータス バーとそのコンポーネントの外観を指定できます。値が変更されるとイベントが実行されます。

他にも elements オブジェクトがあります。これは basicElement オブジェクトとその下位オブジェクトのコンテナの働きをします。

    options オブジェクト

標準のディクショナリまたはマップとして、オプションとその値を保存します。 下記のいずれかの方法で値を設定できます。
options("key") = "value";
options.item("key") = "value";

通常のディクショナリと同様に、下記の 2 つの方法によりアイテムを追加できます。
options("key") = "value"; // 現在の値に追加するか、現在の値を置き換えます。
options.add("key", "value"); // 値を追加します。既に値がある場合は何も行いません。

defaultValue プロパティにより、キーに関連付けられた実際の値がディクショナリにない場合、キーはデフォルトの値を返します。このため、キーに既存の値があるかどうかを確認する必要がなくなります。 次に例を示します。

options.defaultValue("color") = "red";

ディクショナリは、"color" が要求され、"color" が存在しない 場合は、必ず "red" を返します。 たとえば、下記のような結果が返されます。

options.defaultValue("color") = "red";
options("color") = "blue";
debug.trace(options( "color")); // "blue" と表示されます
options.remove("color");
debug.trace(options("color")); // "red" (デフォルトの値) と表示されます
options("texture") = "bumpy";
debug.trace(options("texture")); // "bumpy" と表示されます
options.remove("texture");
debug.trace(options("texture")); // デフォルト値がないため、"" と表示されます

    4.0 以前のオブジェクト (googleTalkfriendContentItemmenu、DetailsView)

4.0 以前の開発モデルで使用した 4 つのオブジェクト googleTalkfriendContentItem、および menuは、4.0 開発モデルにも含まれています。 コードで googleTalk または menu イベント ハンドラを使用する場合は、4.0 以前のイベント処理モデルを使用する必要があります。 また、その他の UI 要素とは異なり、これらのオブジェクトは basicElement の下位オブジェクトではありません。

googleTalk および friend オブジェクトを使用して、他のマシンで実行されているガジェットと通信できるガジェットを作成する方法の詳細については、Google デスクトップ サイドバー通信 API ドキュメントをご覧ください。

menu オブジェクトとそのメソッドにより、ユーザーがメニュー アイテムをクリックした時にハンドラ関数を関連付けるなど、ガジェットに複数のアイテムを持つメニューを作成できます。

ContentItem オブジェクトは別のマシンで実行中のガジェット間で渡され、contentArea オブジェクトに含まれる UI 要素を構成します。

DetailsView は UI 機能で、ガジェットでサイドバー外の別のウィンドウまたはガジェットに追加情報を表示することができます。 ガジェットでは、この機能を使用して、詳細ビューから通知やイベントを受け取ることもできます。

framework ネームスペース

framework ネームスペースでは、Windows Scripting Host でサポートされない API を検出できるため、ガジェットの実装に役立ちます。 特に、framework.* オブジェクトは basicElement の下位オブジェクトではないため、ガジェットの XML UI オブジェクト定義には表示されません。 framework は、基本的に .NET と同様のオブジェクトのネームスペースで、システム情報の検索に使用します。システム情報は、XML 定義の UI オブジェクトでイベントに呼び出されるスクリプトで使用します。

framework オブジェクトとそのプロパティおよびメソッドにより、下記の操作が可能になります。

  • ファイル参照ダイアログを表示する。
  • 画像ファイルを読み込む。
  • 現在のカーソルの場所を取得する。
  • システム メモリの容量と使用量に関する情報を取得する。
  • システムの無線電波と接続状況に関する情報を取得する。
  • スクリプト コードの実行時間を制御するカウンターを設定、監視する。
  • システムの電源およびバッテリー容量 (総量および残量) に関する情報を取得する。
  • システムのプロセッサに関する情報を取得する。
  • システムの画面のサイズを取得する。

最後に、下記の 2 つの既定のオブジェクトは、Framework ネームスペース内の型にのみ使用できます。

  • point: ポイントを x 軸と y 軸のプロパティで表します。
  • size: 高さと幅のプロパティでオブジェクトのサイズを表します。

framework オブジェクトの使用例として、ノートパソコンのバッテリー残量を示す簡単なガジェットを作成してみます。


<view width="200" height="200" onopen="view_onopen()">
 <script language="jscript"><!--
  function view_onopen()
  {
    setInterval( "update_battery()", 1000 );
  }

  function update_battery()
  {
    percent_used.innerText = system.power.percentRemaining + "%";
  }

 --></script>

 <div background="#FFFFFF" width="200" height="200"/>

 <label name="percent_used" align="center" valign="middle">0%</label>
</view>

この例では、下記の 2 つの要素を持つ 200×200 ピクセルのビューを定義しました。

  • 背景色が白色の <div>
  • percent_used という名前の <label>。最初は 0 % と表示されます。

ガジェットが読み込まれると、view::onopen イベントが実行され、view_onopen() が呼び出されます。 この関数では間隔を指定しているため、update_battery() は 1 秒ごとに呼び出されます。 update_battery() は、framework ネームスペースの system.power.percentRemaining オブジェクトおよびプロパティを使用して、percent_used 要素の innerText を更新します。

この例では、framework.system.power.percentRemaining の前に置く必要はありません。必要に応じて判断してください。


ドラッグ アンド ドロップ UI オブジェクト

ドラッグ アンド ドロップ UI アイコン

ここでは、作成ツールで最初にガジェットの UI を定義する方法を説明します。 下記の 8 つの UI 要素のいずれかの上でマウスをクリックし、白色の表示エリア内のガジェットでこの要素を表示する場所にドラッグします。 マウス ボタンを離すと、UI 要素はガジェットと選択した UI 要素の両方に表示されます。 選択した UI 要素のプロパティとその値は、右にあるプロパティ ウィンドウに表示されます。 表示エリアの UI オブジェクトをクリックすると、選択した状態になります。

UI オブジェクトのすべてのプロパティ、メソッドおよびイベントの説明については、API リファレンスのセクションを参照してください。 下記のオブジェクトは、すべて basicElement オブジェクトから継承されるため、各オブジェクトに指定されていないプロパティやイベントの説明については、basicElement オブジェクトのセクションを確認してください。 8 つの UI 要素は下記のとおりです。

  • Div: ガジェットや UI 要素の背景色の設定に使用されるほか、UI 要素を格納する要素に UI 要素を自動的に挿入または削除するためのフックを提供します。
  • Image: ビューで表示する画像を指定します。
  • Button: ボタンを押すオブジェクトです。
  • Edit: ガジェットのユーザーがテキスト コンテンツを編集できるエリアを指定します。
  • Check: チェックボックス オブジェクトです。
  • Link: HTML リンクを定義します。
  • Text Label: 固定のテキスト ラベル オブジェクトです。
  • Content: ContentArea を格納するオブジェクトです。 使用方法については、API リファレンスを参照してください。

progressbar および object の UI 要素は、作成ツールのドラッグ アンド ドロップ要素として使用することはできませんが、XML コードで定義することができます。 作成ツールでは、ガジェットの XML ファイルを直接編集することはできません。ファイルを編集するには、外部の編集プログラムを使用する必要があります。


要素ウィンドウ

表示ウィンドウに 1 個以上の UI 要素がある場合は、下記のいずれかの方法で要素を選択できます。

  • 表示ウィンドウで要素を 1 回クリックする。
  • 要素ウィンドウで要素名をクリックする。

表示ウィンドウにオブジェクトを先に置いた場合は、要素ウィンドウに view 要素の子として表示され、要素の型は識別子とだけ表示されます。 このため、Button 要素を表示ウィンドウに 2 回ドラッグすると、要素ウィンドウに 2 つのアイテムが表示され、両方とも button に指定されます。 たとえば、要素にButton1 という名前を付けた場合は、要素ウィンドウに button (Button1) と表示されます。

作成ツールで view オブジェクトのプロパティおよびイベントにアクセスするには、要素ウィンドウview エントリをクリックする方法しかないので注意してください。

要素ウィンドウ

プロパティ ウィンドウ

プロパティ ウィンドウには、選択されている UI オブジェクトのプロパティと値が表示されます。 この画面でも、オブジェクトのプロパティ値とそのイベントに関連付ける関数を編集できます。

プロパティ値を編集するには、名前または値をクリックします。 入力できる値は、プロパティの種類によって異なります。

  • ブール型のプロパティの場合は、true および false の値を含む小さいプルダウン メニューが表示されます。 プロパティに設定する値をクリックします。
  • 数値またはテキスト値のプロパティの場合は、値フィールドに新しい値を入力し、Enter を押します。
  • maskdiv背景など、一部のプロパティ値には文字列やファイルを指定できます。 このタイプのプロパティの場合は、3 つのドット付きの小さいボックスが表示されます。 ボックスをクリックすると、[ファイルを開く] ブラウザ ウィンドウが表示され、プロパティ値に設定するファイルを選択できます。 文字列を指定する場合は、値フィールドに入力し、Enter を押します。

必要に応じて、UI オブジェクトの新しいプロパティ値が表示に反映されます。

cursor など、一部のプロパティは指定できる値のセットが定義および制限されています。 作成ツールでは、入力した値がプロパティに指定できる値のセットに含まれているかどうかは確認できません。 ただし、指定できない値を指定してビューを表示しようとすると、エラーが発生します。

また、要素ウィンドウで選択してアクセスできる全体の view オブジェクトには、独自のプロパティとイベントのセットがあります。 たとえば、ビューのサイズを変更する場合、要素ウィンドウで view をクリックし、プロパティ ウィンドウで高さの値を変更します。

イベントの場合は、ガジェットに含めたスクリプト ファイルで定義した関数名を値フィールドに入力します。 たとえば、view オブジェクトの onOpen イベントでは、main.js で定義した view_onOpen() 関数を 値フィールドに入力できます。

プロパティ ウィンドウ

スクリプト ウィンドウ

このウィンドウには、表示されている XML ファイルのガジェットで使用するスクリプト ファイルが表示されます。 スクリプト ファイルは、ガジェットが完成したときに UI XML や画像ファイルと共に圧縮されます。 デフォルトでは、main.js ファイルのみ含まれますが、他のスクリプト ファイルを追加して、main.js ファイルを削除することもできます。

スクリプト ウィンドウにスクリプト ファイルを追加するには、左にある 3 つのアイコンのうち用紙アイコンをクリックします。 これにより、スクリプト ファイルのみ表示するよう設定されたファイル ブラウザが開き、ガジェットのフォルダが表示されます。 追加するスクリプト ファイルを選択して、[開く] をクリックします。 追加するスクリプト ファイルは、作成済みである必要があります。 File-> コマンドとは異なり、スクリプト ファイルがプロジェクト フォルダにコピーされ、作成ツールのファイル ウィンドウに表示されるようになります。 また、表示ウィンドウでアクティブになっているガジェットの XML ファイルに、<script src="filename" /> 行も追加されます。 たとえば、main.xml がアクティブになっている場合は、<script src="filename"/> 行が main.xmlのみ追加され、options.xml には追加されません

スクリプト ウィンドウでスクリプト ファイルをクリックして選択すると、下記の操作を行うことができます。

  • 中央にある [ファイルを開く] アイコンをクリックしてファイルを開いて編集する。 これにより、ファイル名のラベルがついた上部のタブが新しく追加されます。 また、新しいタブがクリックされ、表示ウィンドウがファイル コンテンツの編集ウィンドウに切り替えられます。
  • 右の X のアイコンをクリックして、スクリプト ウィンドウからファイルを削除します。 スクリプト ファイルは、確認ダイアログの表示なしに削除されますが、ファイル ウィンドウには引き続き表示されます。外部のファイル ブラウザ ツールを使用して、ガジェットのフォルダからファイルを削除しない限り、ファイルはガジェットの一部として圧縮されます。

重要な点として、スクリプト ウィンドウにはプロジェクト フォルダに保存されているスクリプト ファイルではなく、表示中のビュー定義 XML ファイルで使用されているスクリプト ファイルが表示されます。

[ファイル]、[新規作成] の順にクリックしてファイルを作成した後に main.xml を見ると、<view> 要素の中に <script src="main.js" /> 行があります。 main.js は、スクリプト ウィンドウとファイル ウィンドウの両方にリストされます。

スクリプト ウィンドウから main.js を削除すると、<script src="main.js" /><view> 要素から削除されます。その結果、ガジェットのビューでファイルに定義されている関数を認識できなくなります。 ファイル自体はプロジェクトのフォルダにありますが、削除する場合は外部のファイル ブラウザ プログラムを使用する必要があります。削除しない場合は、他のプロジェクト ファイルと共に .gg ファイルに圧縮されます。

デフォルトでは新しいプロジェクトを作成すると、main.xml<script src="main.js" /> 行が自動的に作成され、main.js には main.xml で使用する view_onOpen() 関数の定義が作成されます。 代わりの関数の定義を指定したり、main.xml を書き換えることなく、スクリプト ウィンドウから main.js を削除すると、view_onOpen() を使用できなくなるため、エラーが発生します。

スクリプト ウィンドウ

メニュー コマンド

作成ツール ウィンドウの上部には、[ファイル]、[編集]、[表示]、[プロジェクト]、および [ヘルプ] の 5 つのプルダウン メニュー付きコマンドがあります。 ここでは、コマンド別に詳細を説明します。

メニュー コマンド

      [ファイル] メニュー コマンド

[ファイル] には下記の 7 つのメニュー コマンドがあります。

  • [新規作成]: [名前を付けて保存] ダイアログを開き、新しいプロジェクトのフォルダの保存場所と名前を指定できます。 [OK] をクリックすると、新しいプロジェクトが作成ツール ウィンドウに表示されます。 注: 作成ツール ウィンドウにプロジェクトが既に表示されている場合は、新しいプロジェクトを開く前に保存するよう促すメッセージは表示されません。 キーボード ショートカットは Cntl-Shift-N です。
  • [プロジェクトを開く]: [フォルダを参照] ダイアログを開き、既存のプロジェクト フォルダを検索できます。 フォルダを選択したら、[OK] をクリックします。 選択したフォルダに main.xml ファイルがない場合は、エラー メッセージ ポップアップが表示され、処理が停止されます。 ファイルが存在する場合は、選択したプロジェクトが作成ツール ウィンドウに表示されます。 キーボード ショートカットは Cntl-Shift-O です。
  • [プロジェクトを閉じる]: 現在のプロジェクトを閉じ、作成ツール ウィンドウに上部のメニュー コマンド以外は何も表示されなくなります。 開いているプロジェクトを保存するよう促すメッセージは表示されませんので、ご注意ください。 このコマンドには、キーボード ショートカットはありません。
  • [開く]: XML ファイルを表示するよう設定されたファイル ブラウザが開きます。 ファイルを選択して開くと、ファイル名のラベルが付いた上部のタブが新しく作成され、新しいタブが選択されて表示ウィンドウ エリアにファイルのコンテンツが表示されます。 ファイル ウィンドウに表示された新しいファイルはガジェットのフォルダに追加されません。これは、ファイルがプロジェクト フォルダに保存されていないためです。 ファイルをプロジェクト フォルダに追加するには、Windows Explorer などの外部のファイル ブラウザを使用します。 キーボード ショートカットは Cntl+O です。
  • [保存]: 開いているガジェットファイルを保存します。 ファイルを編集した場合や UI オブジェクトのプロパティを変更した場合は、必ず保存してください。 キーボード ショートカットは Cntl+S です。
  • [閉じる]: 表示ウィンドウに表示されているファイルを閉じ、ファイルの上部のタブを削除します。 ファイル自体は、ファイル ウィンドウに存在します。 キーボード ショートカットは Cntl+F4 です。
  • [終了]: main.xml ファイルの変更を保存するかどうかを確認するポップアップが表示されます。 [はい] または [いいえ] のいずれかをクリックすると、Gagdet 作成ツールを終了します。 キーボード ショートカットは Alt+F4 です。

また、最近使用したプロジェクトは、メニュー セクションの [終了] コマンドの上に表示されます。 最近使用したプロジェクトをクリックすると、作成ツールでこのプロジェクトが開きます。

[ファイル] コマンド

      [編集] メニュー コマンド

[編集] には下記の 6 つのメニュー コマンドがあります。

  • [元に戻す]: プロパティ値の変更、UI オブジェクトの移動、新しいオブジェクトの作成など、作成ツールで行った操作を元に戻します。 複数回クリックすると、一連の操作を同じ回数だけ元に戻すことができます。 キーボード ショートカットは Cntl+Z です。
  • [やり直し]: 元に戻す操作を行った場合以外は、グレーで表示されます。前回の元に戻す操作をやり直します。 元に戻す操作を複数回行った場合は、複数回クリックして作成ツールを元に戻す前の状態に復元することができます。 キーボード ショートカットは Cntl+Y です。
  • [切り取り]: 表示ウィンドウで選択した UI 要素に対して、標準的な切り取り処理を行います。 キーボード ショートカットは Cntl+x です。
  • [コピー]: 表示ウィンドウで選択した UI 要素に対して、標準的なコピー処理を行います。 UI オブジェクトをコピーすると、すべてのプロパティ値を含むオブジェクト全体がコピーされます。 たとえば、Button2 という名前のボタンをコピーすると、コピーしたボタンの名前プロパティも Button2 という値になります。 要素ウィンドウには 2 つの完全に同じボタンが表示されます。 キーボード ショートカットは Cntl+c です。
  • [貼り付け]: 表示ウィンドウで選択した UI 要素に対して、標準的な貼り付け処理を行います。 キーボード ショートカットは Cntl+v です。
  • [削除]: 表示ウィンドウで選択した UI 要素に対して、標準的な削除処理を行います。 キーボード ショートカットは DEL です。

[編集] コマンド

      [表示] メニュー コマンド

[表示] には下記の 5 つのメニュー コマンドがあります。

  • [更新]: 作成ツール ウィンドウのさまざまなオブジェクトやウィンドウを更新します。 ガジェットのすべてのグローバル変数およびプロパティ値が再度初期化され、グローバルのスコープ コードが最初から実行されるようになります。 ガジェットは最初の状態にリセットされるので、ガジェットのテストを行う際に便利です。 キーボード ショートカットは F5 です。
  • [次のタブ]: 選択しているタブの右にある上部のタブがクリックされた状態になります。 選択しているタブが最後のタブの場合は、1 周して最初のタブがクリックされた状態になります。 キーボード ショートカットは Cntl+Tab です。
  • [前のタブ]: 選択しているタブの左にある上部のタブがクリックされた状態になります。 選択しているタブが最初のタブの場合は、1 周して最後のタブがクリックされた状態になります。 キーボード ショートカットは Cntl+Shift+Tab です。
  • [デバッグ コンソール]: 作成ツール ウィンドウの下部にあるデバッグ コンソールを開きます。通常のウィンドウ コンテンツで前回使用した時と同じサイズで表示されます。他のコンテンツを元のサイズに戻すには、ウィンドウのサイズを変更する必要があります。 ガジェットをプレビューまたは実行すると、選択したチェックボックスに応じて、デバッグ、情報、警告、またはエラー メッセージが表示されます。 また、メッセージに発生時刻を表示するかどうかを選択することもできます。 デバッグ コンソールを非表示にするには、[デバッグ コンソール] メニュー アイテムを再度クリックします。
  • [プレビュー ウィンドウ]: 表示ウィンドウを変更し、ガジェットを実行中の状態で表示します。これにより UI をテストして機能をチェックできます。 上部の [プレビュー] タブをクリックしても同じ操作を行うことができます。

[表示] コマンド

      [プロジェクト] メニュー コマンド

[プロジェクト] には下記の 3 つのメニュー コマンドがあります。

  • [設定]: [プロジェクト設定] ダイアログが表示されます。 キーボード ショートカットは F3 です。
  • [オプション ビューの追加] では、options.xml ファイルをプロジェクトに追加し、options.xml タブを上部に追加します。各プロジェクトには options.xml ファイルを 1 つしか定義できないため、ファイルを一度追加すると [オプション ビューの追加] はグレーで表示されます。 クリックした後、オプション ビューとその UI を作成してテストする必要があります。作成方法およびテスト方法は、メイン ビューで行った方法と同じです。
  • [パッケージの作成]: ガジェットのファイルを配布用のプロジェクト名.gg ファイルに圧縮します。 キーボード ショートカットは F7 です。

[プロジェクト] コマンド

      [ヘルプ] メニュー コマンド

[ヘルプ] には下記の 2 つのメニュー コマンドがあります。

  • [ユーザー ガイド]: このドキュメントをブラウザ ウィンドウで開きます。
  • [概要]: 作成ツールに関する簡単な情報がポップアップで表示されます。

[ヘルプ] コマンド


サイドバー Gadgets 間の通信

サイドバーガジェットは、次の条件を満たしている場合、他のコンピュータで実行されているサイドバーガジェットと通信できます。

  • 同じガジェットである。Tic-Tac-Toe ガジェットは別の Tic-Tac-Toe ガジェットと通信できますが、スクラッチ パッドガジェットとは通信できません。
  • ガジェット間の通信を行うすべてのユーザーが Google トークにログインしている。

Google トークは、サイドバーガジェットの通信メディアとして機能します。 Google トークにログインすると、ガジェットで Google トークのオンラインの友だちリストを取得できるようになります。 オンラインの友だちリストが取得されると、オンラインの友だちのコンピュータ上で実行されている同じガジェットとの間でデータを送受信できます。 友だちがサイドバーをインストールしていない場合は、代わりにテキスト メッセージを送信できます。

スクリプト ベースのガジェットに通信機能を追加する場合は、グローバル変数 googleTalk を使用して、データの送信を行ったり、ガジェットがデータを受信する際にハンドラ関数が呼び出されるよう設定します。

データ送信の最初の手順では、googleTalkfriends プロパティを参照します。このプロパティにより、Google トークのオンラインの友だちから構成される friend オブジェクトの配列が取得されます。

friend オブジェクトには、5 つのプロパティがあります。

  • name: Google トークに表示される名前。
  • user_id: Google トークのユーザー ID。データ/メッセージ受信パラメータとして、データ/メッセージ送信メソッドに渡されます。
  • email_address: 友だちのメール アドレス。
  • has_sidebar: 友だちがサイドバーをインストールしているかどうかを示すブール値。 存在しない可能性のあるサイドバーにデータを送信する場合は、まずこの値を確認する必要があります。
  • status: 友だちの Google トークのステータス。オンラインは 0、アイドル状態は 1、取り込み中は 2 で表示されます。

スクリプトで Google トークの友だちの配列を取得すると、次のいずれかのメソッドを使用してデータを送信します。

  • SendTalkData(friend_id, data): friend_id のサイドバーによって特定される友だちに、文字列データ (最大 2000 文字) を送信します。 データはメソッドの呼び出しが行われる友だちのサードバーの同じガジェットに送信されます。
  • SendTalkText(friend_id, message): friend_id で特定される Google トーク ユーザーに、最大 2000 文字のテキスト メッセージを送信します。 通常、このメソッドは友だちがサイドバーをインストールしていない場合に使用されます。

データを受信するには、データを処理する関数を googleTalkonReceiveTalkData 関数ハンドラに関連付ける必要があります。 関数のシグネチャは、name(friend_object, data_string) となります。 この関数は、ガジェットがデータを受信するときに必ず呼び出されるため、別のガジェットが送信する可能性のあるすべてのメッセージを処理できるように記述する必要があります。

通信 API を使用するスクリプトガジェットでは、eval() を呼び出して、受信データを実行することがないようにする必要があります。 これは、悪意のあるユーザーがガジェットを変更し、友だちのコンピュータ上で実行されるスクリプトを送信するのを防ぐためです。 受信したスクリプトがローカル権限のもとで実行され、ローカルのファイルおよび情報にアクセスする可能性があります。 これを防ぐには、eval() 呼び出しで受信データを評価しないようにします。

ガジェット通信の例としては、SDK に含まれる Tic-Tac-Toe のサンプル コードを参照してください。



ユーザー インターフェースと操作に関するガイドライン

ガジェットを作成する際は、次の一般的なルールを考慮してください。

  • シンプルでわかりやすく、できるだけ小さいガジェットにする。

    サイドバーに表示できる情報量は非常に限られているため、表示する情報に必要な領域だけを使用します。 シンプルなカラー パレットを使用すると、表示をわかりやすくして、他のガジェットとの干渉を最小限に抑えることができます。

  • 開発中に使いやすさをテストする。

    ガジェットの機能を開発する過程で、他のユーザーにガジェットを使用してもらいます。 UI はわかりやすく、使いにくいものでないか検討します。 特に、ヘルプのコンテンツは明確で役に立つ総合的なものにします。

ユーザーは、異なるサイドバーガジェットでも同じように操作できることを期待しています。 次のセクションでは、すべてのサイドバーガジェットで統一する必要のある、共通の表示スタイルと動作について説明します。



      全般的なデザイン

ガジェットでは、代わりの動作および情報をできるだけ多く提供する必要があります。 具体的には、次のようにします。

  • ガジェットのコマンドをマウスとキーボードの両方で実行できるようにして、メニュー コマンドのキーボード ショートカットを用意する。
  • ツールのヒントを提供する。
  • 必要な場合は詳細ビュー パネルを提供し、右クリック メニューに実行可能な動作を表示する。



      マウス入力

ほとんどのガジェットはマウスで操作するため、特にマウス入力に関する UI はサイドバー全体で統一し、混乱を防ぐ必要があります。 次の主要な3 つのタイル要素の表示スタイルに従って、クリックの種類とそれに対応する動作を統一します。

  • アイテム: ニュースガジェットの記事など、ガジェットのメインのコンテンツを表示します。
    • シングル クリックすると、アイテムを選択し、詳細ビューを開きます。
    • ダブル クリックすると、アイテムを新しいアプリケーション ウィンドウに表示し、サイドバーで選択した状態にします。
    • マウスを置くと、アイテムを一時的に選択します。

  • ウィジット: ボタンやチェックボックスを選択したり、スターを付けるなど、クリックして何らかの動作を行います。
    • シングル クリックのみ使用します。 ダブル クリックは、アイテムを開くために使用します。
    • マウスを置く、およびクリックすると、通常と異なる表示に変わります。
    • 3D シャドウ付きのグラフィックなどを使用して、クリック可能であることがわかるようにする必要があります。
    • テキストをウィジットとしても使用する場合は、通常のテキストとは次の方法で区別します。
      • クリック可能なテキストの横にアイコンを表示する (下記の削除ボタンの例を参照)。
      • マウスを置いたときに、クリック可能とわかるように、またはボタンのように表示する。
    • ウィジットはアイテムではなく、アイテムの一部でもありません。 ウィジットをクリックしたときに、アイテムの詳細ビューが開かないようにする必要があります。
    • サポートされている DrawItemBackground (異なるフラグを設定) をテキストやグラフィックに使用して、サイドバー全体でボタンのデザインを統一します。
    • ウィジットの例:
        通常の状態 マウスを置いた状態 クリックした状態
      チェックボックス
      (タスクリスト gadget)
      通常のチェックボックス チェックボックスにマウスを置いた状態 チェックボックスをクリックした状態
      削除ボタン
      (詳細ビュー)
      削除ボタン 削除ボタンにマウスを置いた状態 削除ボタンをクリックした状態
  • ステータス インジケータ: サブ情報を表示するアイコンまたはグラフィックです。
    • アイテムの一部である場合は、アイテムのマウス動作をすべて継承します。
    • 一般的にグラフィックはクリックできないため、マウスを置いたときやクリックしたときも変更しません。
    • ステータスの例 (時間外取引の月マーク、ネットワークの稼働状況、天気予報の雲マーク) を次に示します。



表示

      グラフィックとアイコン

  • ガジェットのアイコンは 2 つのサイズを用意します。 アイコンのデザインはわかりやすく、ガジェットの機能に適したものにする必要があります。

    • 12×12 ピクセル: ガジェットのタイトル バーに表示されます。

    • 32×32 ピクセル: [このガジェットについて] ダイアログおよびアラート UI (ガジェットでサポートされている場合) に表示されます。

  • ガジェット内のアイコンは、12×12 ピクセルとする必要があります。 小さいサイズに合わせてシンプルな形とカラー パレットを使用し、ガジェットを一目で区別できるようにします。

  • サイドバーのデフォルトのガジェットで使用する 12×12 アイコンは下記のとおりです。 アイコンのスタイルは、これらのアイコンに合わて、シンプルな丸みを帯びたデザインで、メインの色を基調に同じ色調で作成します。 画像自体は、ガジェットの機能を平面で表したものです。 アイコンにはメインの色の同系色で 1 ピクセルの枠線が付けられています。


      色


  • 色は控え目なものを使用します。 灰色系が適切な場合はこれを使用します。

  • 明るすぎる色やコントラストが高いまたは低すぎる色の組み合わせは使用しないでください。 目が疲れないような色を使用します。 たとえば、左側の画像の配色は適切ですが、右側はわかりづらいものとなっています。

  • 違いを色だけで表現しないようにします。色覚に障害のあるユーザーには正確に伝わらない可能性があります。 次の例では、株価の変動を色 (赤/緑) とテキスト (+/-) で表しています。


      テキスト

  • サイドバーのテキスト表示には、ユーザー指定のシステム フォントとフォント サイズを使用できます。

  • 通常のテキストは黒色にし、重要性の低いテキストの色は濃紺 (#224499 または rgb(34, 68, 153)) または灰色 (#666666 または rgb(102, 102, 102)) にします。

  • サイドバーでは太字は強調の度合いが高くなりすぎるので、できるだけ使用しないようにします。


フォーマットとレイアウト
サイドバーガジェットでは、通常最小化拡張詳細の 4 つのビューを表示できます。
  • 通常ビュー: 通常の表示です。

    ウェブ クリップなどのアイテムのリストがある場合、API で提供されるリスト レイアウトを使用できます。 写真などの 1 つのアイテムのみを表示する場合は、単一アイテム リスト レイアウトを使用します。 ガジェットの機能は、通常ビューのコンテンツを見るだけでわかるようにする必要があります。

    サイドバーの幅によって表示できる情報の量が決まります。 スクロール バーはできるだけ使用せず、代わりにアイテムの拡張ビューを使用します。

    どのような種類のアイテムかが一目ではっきりとわかるようにします。 たとえば、ファイル アイテムの場合は、名前の横にファイル形式のアイコンを表示します。メールやウェブページなど長いテキスト本文の概要の場合は、最初の行にタイトルを表示し、アイテムのソースと日付に関する簡単な詳細を追加します。

    ガジェットの通常ビュー

  • 最小化ビュー: タイトル バーだけの表示です。

    通常、タイトル バーにはガジェットのアイコンとタイトルだけが表示されます。 タイトルの代わりに、銘柄とその株価などのアイテムの概要を 1 つずつ順番に表示することもできます。

    ガジェットの最小化ビュー

  • 拡張ビュー: サイドバーの横に表示される最大化されたビューです。

    通常は、ガジェットアイテムの全リストを表示するために使用します。表示するアイテムの数が多い場合は、垂直スクロール バーを使用できます。

    ガジェットの拡張ビュー

  • 詳細ビュー: ガジェットの特定のアイテムの詳細です。

    詳細ビューは、ガジェットの通常ビューまたは拡張ビューでアイテムをクリックしたときに表示し、できるだけ多くの情報を表示する必要があります。

    アイテムのタイトルをクリックしたときに、ブラウザでウェブページを開くなど、関連アプリケーションでアイテムを表示します。

    アイテム詳細ビューアイテム詳細ビュー

グローバル化

ガジェットで他の言語のテキストを提供できない場合でも、テキストおよびラベルを複数の言語で表示できるようにする必要があります。 こうすることで、他のユーザーが他の言語テキストを提供できるようになります。 他の言語のユーザー用に、異なる画像、ビュー レイアウト、スクリプトを指定することもできます。

まず、言語について説明します。 複数の言語をサポートするには、ガジェットの UI に表示される各言語版の文字列を、strings.xml という名前のファイルにリストし、このファイルを各言語用の ID が付いたサブディレクトリに置く必要があります。 このファイルには、各言語の文字列の変数割り当てが含まれています。 ガジェットの定義およびコードでは、各言語版の文字列ではなく、変数を使用します。 たとえば、Hello World's English の strings.xml ファイルには次の行を含めます。


<strings>

  <strTitle>HelloWorld!</strTitle> 
  <strHello>HelloWorld!</strHello> 
  <strSnippet>アイテム情報。</strSnippet> 
  <strAboutText>
	HelloWorld! プラグイン。 著作権情報。 詳細な説明。
	</strAboutText> 
  <strDescription>Says Hello World</strDescription> 
  </strings>

    

Hello World ガジェットのスクリプト コードで、ビューの caption プロパティを次のように "HelloWorld!" タイトルに設定します。
view.caption = strTitle;
XML または .gmanifest ファイルで、[概略] テキストを次のように設定します。
<aboutText>&strAboutText</aboutText>

コードでは、strings.xml ファイルから取得される要素名を使用します。 XML では、要素名の先頭に & を付ける必要があります。

英語とフランス語の 2 つのバージョンでガジェットを作成する場合、ファイルは次のディレクトリ階層で配置します。


  <GD dir>/Plugins/YourGadget
                     |
                     |---- gadget.js
                     |
                     |---- gadget.gif
                     |
                     |---- 1033 (英語 (アメリカ) の言語 ID)
                     |      |
                     |      `-- strings.xml
                     |
                     `---- 1036 (フランス語の言語 ID)
                            |
                            `-- strings.xml
     

サイドバーでは、現在のシステムと同じ言語 ID のディレクトリが存在するかどうかを最初に確認します。 存在する場合は、そのディレクトリの strings.xml ファイルが読み込まれます。 同じ言語 ID のディレクトリが存在しない場合で、1033 (アメリカ英語) ディレクトリが存在する場合は、デフォルトでそのディレクトリの strings.xml ファイルが読み込まれます。

同様に、ローカライズ フォルダに画像、マークアップ、スクリプトなどを配置すると、上記のルールに従い、サイドバーによりこれらのファイルが読み込まれます。 たとえば、ガジェットで各言語に応じて異なる画像を必要とする場合は、次のように指定します。
<img src="some_image.png"/>

サイドバーでは、最初に some_image.png の読み込みを試みます。システム言語がフランス語の場合は、フランス語のローカライズ ディレクトリ (1036\some_image.png) 内が検索され、次に英語のディレクトリ (1033\some_image.png) 内が検索されます。

メイン ディレクトリではなく、ローカライズ ディレクトリに置くことができるコンテンツは次のとおりです。

  • main.xml: 各言語ごとに異なるレイアウトが必要な場合。
  • options.xml: 各言語ごとに異なるレイアウトが必要な場合。
  • anything.js: 各言語ごとに異なるスクリプトが必要な場合。

ほとんどの場合にデフォルトの動作をし、特定の言語では異なる動作をするガジェットを作成するには、次のようにします。

  • gadget.xml ファイルを gadget.gg ファイルのルート フォルダに置きます。
  • 残りのコンテンツを gadget.gg1033\ フォルダに置きます。
  • 特定の言語に置き換える必要のあるコンテンツを、該当の言語用のフォルダに置きます。

言語 ID の全リストについては、こちらをご覧ください。


API リファレンス


オブジェクト リファレンス

このセクションでは、Google ガジェット API のさまざまなスクリプト関連オブジェクトについて、そのプロパティ、メソッド、および関連付けられたイベントとともに説明します。 多くのオブジェクトでは basicElement からプロパティ、メソッド、およびイベントが継承されます。

また、メソッドで element を返すとの記述がある場合、これはガジェットの XML 定義で定義された要素を指し、basicElement の下に位置します。

gadget.debug
ガジェットの開発およびデバッグに役立つ API を提供します。 デバッグ モードで実行するには、ガジェットを解凍し、解凍したファイルの中の gadget.gmanifest ファイルをダブルクリックします。
メソッド
名前および引数 説明 戻り値
error(string Message) ガジェットがデバッグ モードで実行されているときに、デバッグ コンソールにエラーとして文字列メッセージを表示します。 void
trace(string Message) ガジェットがデバッグ モードで実行されているときに、デバッグ コンソールに文字列メッセージを表示します。 void
warning(string Message) ガジェットがデバッグ モードで実行されているときに、デバッグ コンソールに警告として文字列メッセージを表示します。 void


gadget.storage
ガジェットパッケージのコンテンツへのアクセスを提供します。
メソッド
名前および引数 説明 戻り値
extract(string filename) ガジェットパッケージから一時フォルダにファイルを抽出し、抽出したファイルへの完全なパスを返します。 string
openStream(string filename) ガジェットパッケージからファイルを開き、コンテンツをストリームとして返します。 stream
openText(string filename) ガジェットパッケージからファイルを開き、コンテンツを文字列として返します。 string


view
注: その子オブジェクトやコンテンツ オブジェクトとは異なり、viewbasicElement から継承されません
view オブジェクトは、ガジェットの各ウィンドウ UI ごとに個別のファイルで定義する必要があります。
プロパティ
名前 説明 データ型 読み取り/書き込み
caption ビューの説明です。デフォルトではガジェットがフローティング モードまたは拡張モードのときに表示され、サイドバーにあるときは表示されません。 showCaptionAlways プロパティも参照してください。 string 読み取りおよび書き込み
children ビュー要素のすぐ下の子を含むコレクションを返します。 これらの子はすべて basicElement の下位オブジェクトとなります。 スクリプトからのみアクセスでき、XML 定義からはアクセスできません。 elements 読み取り専用
event イベント オブジェクトが、イベント ハンドラのスクリプトにどのように提供されるかを示します。 event 読み取り
height ビューの高さをピクセル値で設定、または返します。 integer 読み取りおよび書き込み
width ビューの幅をピクセル値で設定、または返します。 integer 読み取りおよび書き込み
resizable true の場合、ユーザーはビューのサイズを変更できます。 boolean 読み取りおよび書き込み
showCaptionAlways true の場合、サイドバーには caption プロパティで指定したビューの説明が常に表示されます。 デフォルトの設定、またはこの値が false の場合は、ガジェットがサイドバーにあるときは表示されず、フローティング モードまたは拡張モードのときは表示されます。 boolean 読み取りおよび書き込