Googleを追いかけろ!

.
価格.com ブロードバンド

WWW を検索 Googleを追いかけろ! を検索



Script Editor を使う

スクリプトを書いて実行し、さらにはトリガーの設定や共有などの実現には Script Editor を使わなくてはなりません。 今開いているスプレッドシート、または新規のスプレッドシートで Tools > Scripts > Script editor と選択してください。

Script Editor の動作はそのシートがすでにスクリプトを持つか持たないかによって決まります。もしスクリプトが含まれているのなら シートはスクリプトがロードされた状態で開かれます。

スクリプトのない状態の Script Editor を開くと下のようになっています。

ここには myFunction() 名づけられた関数の宣言に関する一部のコードが見られるだけです。そして初めと終わりに中括弧があるだけです。 しかし、これもコードなのです。ただし実行してもこの関数は何もしてくれませんが。

Script Editor にコードを打ち込むか、Script Gallery から既存のスクリプトをインストールすると、スクリプトが表示されたり、プログラムとは無関係の要素との区別を容易にするために一部の文字色が変わったりします。

  1. var,function などのエレメントや while,if などといったプログラミング構文は栗色になっています。 変数名は明るい青色です。
  2. メソッドに対する逐語的リテラル文字列の引数は緑色です。
  3. メソッドに対する可変引数は淡い青色です。
  4. メソッドが操作している変数名は淡い青色です。
  5. メソッドと関数名は黒色です
  6. リテラルテキストは赤色です。コメントアウトされたコード行を含みます。
  7. コメントは淡褐色です。
* このサイトではコードは茶色、コメントは緑色の2色で分けてるだけです
Script Editor では次のことができます。
  1. スクリプトを開く、削除する、リネームする、保存するなどのファイル管理操作
  2. テキストのコピー&ペースト
  3. Script Gallery からスクリプトを開く( File > Insert from gallery
  4. スクリプトの名前、説明、作成された日時、スクリプトキーなどのスクリプトのプロパティを調べる。スクリプトキーはそのスクリプトの一意の識別子です。
  5. スクリプトの実行。どんなスクリプトでもScript Editor から直接起動させることができます。ただしアンダースコアで終わる名前を持つものは他の関数からだけしか呼び出せません。
  6. ログメッセージと実行結果の閲覧
  7. スクリプトの共有設定

スクリプトのプランニング

コードを書こうとするとき、はじめは擬似コードが役に立つでしょう。擬似コードはスクリプトが必要とするところを正確で詳細に文章にしたものと思えば良いでしょう。 いくつの関数が必要になるかの決定に役立つはずです。たとえば、どこでループやカウンターや変数などが必要かとか、どこで様々な計算が必要になるかを教えてくれます。 Stock Price スクリプトの擬似コードを見てみましょう。
first function runs when Spreadsheet is opened / シートが開かれると最初の関数が実行される
read the current Spreadsheet into a variable / カレントシートを変数に読み込む
define menu entries / メニューエントリーを定義する
define menu name / メニュー名を定義する

second function does most of the work in the Spreadsheet / 2番目の関数がシート上のほとんどの仕事を受け持つ
read the current Spreadsheet into a variable / カレントシートを変数に読み込む
set the column labels / カラムラベルをセットする
define a counter called row / カウンタと呼ばれる行を定義する
start a while true loop / ループの開始
use an if loop to test whether there's a stock symbol in the current row first column
		/ 株式銘柄が最初のカラムの現在行にあるかないかをifループで行う
write data to the log / ログにデータを書き込む
look up the stock symbol / 銘柄を検索
write the stock information in the correct column of each row that has a stock symbol
		/ 銘柄名を持つ各行の適当なカラムに株式情報を書き込む
write data to the log / ログを書き込む
increment the counter / カウンターを増やす

さらにスクリプトとスプレッドシートについて

Google Spreadsheet に関連付けられた特別なスクリプトがひとつあります。もしシートのコピーをするとスクリプトもコピーされますが、 これを確かめるには、オリジナルシートのスクリプトキーとコピーされたシートのキーを照合することです。

複合的なスクリプトを備えたシートもあります。onOpen event handler を複数のスクリプトに関連付けてシートを作成すると、 スプレッドシートを開いたときにすべてのスクリプトの実行が開始され、順序付けられたスクリプトが不定期に開始されてしまいます。 event handler は特別なイベントが生じたときに実行される関数です。詳しい情報は Running Scripts in Response to an Event(イベントへの応答スクリプト)で確かめてください。

スクリプトが他のスクリプトにある関数を呼び出したり、新たなスクリプトを作成したりすることはできません。スプレッドシートのセルを変更することによって、その動作をシミュレートすることはできますが、 関数が実行環境の状態を変更することはできません。

スクリプトをはじめる

Script Editor を開いてもご覧のように、スクリプトそのものは何も書かれてはいません。

function myFunction() {
  
}
myFunction という関数名は取り敢えず一時的に割り当てられたものです。実際にコードを書けば任意の名前を付けることが可能です。 とはいえ、関数名はその内容の指し示す単語で作られることが一般的です。例えば getStockName() のようにです。 関数名は、従来から最初の単語の最初の文字は小文字とし、後続の各単語の最初の文字に大文字を与えるラクダ文字としていることが多いのです。 また、関数内の命令は括弧で囲む必要があります。

スクリプトには必要な関数を好きなだけいくつでも持たせることができます。スクリプトを書くときにはコードの主となるブロックごとに、目的や変数の提供するものが何か等のコメントを入れるようにしましょう。 コメントは後々スクリプトの動きを追ったり、メンテナンスをするときに大変助けになるのです。

関数名がアンダースコアーで終わる、例えば internalStuff_() となった場合は一般の関数とは違う特別扱いをしなければなりません。 Script Editor の実行フィールドでこの関数を目にすることはありません。Script Manager にも表れませせん。 アンダースコアーが使えるのはユーザーに関数を実行させないように明らかにするときと他の関数だけが利用できるようにしたい時だけです。

スクリプト実行の方法を選ぶ

スクリプトをいつどのように実行させるかはコントロールできます。下の方法から選んでください。
  1. イベントハンドラーを使う。イベントハンドラーは開かれたとき、挿入されたとき、編集されたとき、選んだ時刻になったときにスクリプトを実行させることができます。 こちらRunning Scripts in Response to an Event(イベントへの応答スクリプト) で確かめてください。
  2. メニューのカスタム化で実行する方法です。Stock Price script ではユーザーに特別なメニューを作らせることで実現しています。
  3. シートにイメージやボタンを描いて利用します。これらをクリックすればスクリプトが実行されます。チュートリアルのCreating a button to run the code以下を参考にして下さい。
  4. スプレッドシートの関数として参照されるカスタム関数の利用です。この章 Using Custom Functions を参照してください。
  5. Script Editor の実行ボタンを利用します。
  6. Tools > Scripts > Manager と進みScript Managerの実行ボタンを利用します。

Google Apps Script APIsを使う

Google Apps Script APIs を使う手助けになるものとして、オブジェクト指向プログラミング言語とその働きについて少し解説する必要があります。 さて、 API documentation をどのように読むべきでしょうか。

Google Apps ScriptJavaScript 言語を利用しています。Google Apps を特定した操作性は API documentation で書かれたオブジェクトやメソッドを利用することで実現されます。 API はアプリケーションプログラミングインターフェイスの略です。スクリプトやプログラムで達成させたい標準的なタスクのコードをパッケージ化したものです。

オブジェクトの青写真とはオブジェクト生成のテンプレートです。同じテンプレートから作られたオブジェクトはすべて attributes と呼ばれる固有の特性を共有しています。 たとえば Google Apps ScriptMailApp と呼ぶオブジェクトを持っています。 メール作成や送信に利用するオブジェクトです。オブジェクト名は通常は大文字で、オブジェクト名の他の単語はすべて途中が大文で始まる単語を使用します。 Google Apps Script API documentation はクラスであるオブジェクトについて説明しているのです。

メソッドはオブジェクトの挙動を示し、そして関数はオブジェクトと密接な関係にあります。MailApp オブジェクトはたった一つのメソッドしか持っていません。sendEmail method です。 一般的にメソッド名は小文字では始まり、途中は大文字始まりで追加していく単語です。このスタイルは camelCase として知られています。

sendEmailメソッドにはたくさんの引数があります。それらはメソッドに正しい働きをさせるための正確に定義した値のことです。 sendEmail の場合、メールの内容に含まれる情報を引数が定義しています。同様に sendEmail はより高等な引数をとります。 どちらの引数も、受信者、件名、本文またはテキスト、返信先アドレス、それ以外の引数を含みます。 4人に指示メールを送った次の例をみましょう。 mikemike, lisa, janos, nikhil, の名前がカンマ区切りのリストと引用符で囲まれています。 Attachment Example(添付ファイルの例) という件名と Here is my document という本文もあります。括弧内の命令は、添付ファイルを定義します。

MailApp.sendEmail("mikemike@example.com,lisa@example.com,janos@example.com,nikhil@example.com", "Attachment example",
 "Here is my document", {attachments: myFiles});
上の指示は class MailAppクラスsendEmail メソッドを呼び出しているものです。一般的には下のようになります。
className.methodName(argument1, argument2, argument3....argumentn);
たとえば Hello, World を表示するメッセージボックスだったら、 BrowserクラスmsgBoxメソッドで、msgBoxの場合は Hello, World そのもののテキスト文が引数に当たります。
Browser.msgBox("Hello, World");
ここですこしGoogle Apps Scripts API documentation ページの構成を紹介しましょう。 左サイドバーにはすべてのサービスへのリンクとそれぞれのサービスに関連深いオブジェクトへのリンクがあります。DocsList link へのリンクを開けば オブジェクトとそのすべてのメソッドのリストがあります。また、base class File へのリンクを見るとクラスメソッドについての説明が載っています。 表中のメソッド名をクリックすれば、そのメソッドの使用可能な引数のリストが分かり、どういうメソッドからの戻り値なのかを知ることができます。getName method メソッドはフィル名を文字列(テキスト)として 返すことが分かるでしょう。

データストレージとデータソース

Google Apps Script では異なる方法でいろいろなフォーマットのデータを回収したりアクセスすることができます。スクリプトにデータを提供する方法としては、スクリプトの保存されているシート にデータを埋め込むのが最も簡単でしょう。自分で入力することもできますが、下記のフォーマットならいずれもスプレッドシートにインポートできます。
  • .xls
  • .xlsx
  • .ods
  • .csv
  • .txt
これ以外のデータフォーマットのときは一度上記のフォーマットにエクスポートしてからシートに取り込んでください。 Google Apps Script はXMLデータとの連携も可能です。データのパースや操作のためにもXMLの構造を知っておくことをお勧めします。 更なる情報はこちらから。 APIs for handling XML documents, tutorial for parsing XML documents

カスタム関数の利用

カスタム関数というのはスプレッドシート内のセルに直接 =myFunctionName() のような構文を入力してスクリプトを実行する方法です。 カスタム関数の返す値は構文を入力したセル以外のセルにはセットできません。 A1セル を利用したカスタム関数で A5セル の内容を変更することはできないのです。 もし関数がダブル配列を返すのなら、関数を含むセルはオーバーフローして関数を含むセルの下側と右側のセルも埋められてしまいます。 return [[1,2],[3,4]];のような例で試すことができるでしょう。

チュートリアル parsing XML data で取り上げられた Oracle of Bacon で使用しているカスタム関数では Oracle of Bacon へのクエリの前に =kb("actor_name1", "actor_name2") として二人の俳優を選択しています。 セル内のカスタム関数から要求されたデータを提供する以外に、カスタム関数実行のためのアクションは必要としないのです。

カスタム関数には他の関数とは共有できない制限事項があります。

  • メール発信はできない
  • Google Siteの操作はできない
  • 管理権限者の許可を要求する操作はすべてできない。(たとえば他人のカレンダーにイベントを追加するようなこと)
  • ユーザーに関する情報を要求することはできない

既存のスプレッドシートの数式との相互作用

すでにスクリプトを書いたり挿入したりしたシートはなんらかの数式を持っています。スクリプト内のそれらの公式や関数をどのように実行させ 結び付けていくかの知識です。
  • onInstall 関数のあるシート ・・ スプレッドシートを挿入すれば実行される
  • onOpen 関数のあるシート ・・ スプレッドシートを開けば実行される
  • スプレッドシート内でカスタム関数や数式が実行されたとき、または数式内のデータが変更されたときはスプレッドシート全体が評価される
  • 関数が手動またはリンクや添付された図形などによって実行されたとき、他の関数であっても実行される

スクリプトの共有

スクリプトを共有したいとき、スクリプトが保存されているスプレッドシートを共有することで実現できます。Googleアカウントを持っているのならば、Script Gallery に公開することです。 公開されたスクリプトは Google Docsユーザーならば誰でも利用できます。

スプレッドシートの公開とスクリプトの実行や編集を可能にするために

  • スプレッドシート内の共有ボタンを利用して他のユーザーを招待する
  • スプレッドシートの編集権利を持つユーザーを共同作業者とする
  • 他のユーザーの編集を可能にさせるために
    • Share > Sharing Settings からを選択
    • Allow document collaborators to edit the script を選択しOKをクリック
スクリプトの公開のために
  1. Script EditorPublish script を選択
  2. スクリプト名を入力
  3. ユーザーが助かるように、短い紹介とどのような内容のスクリプトか、どのようなデータが必要かなどを記入
  4. ドロップダウンリストから Category を選択
  5. ヘルプページを入力
  6. 公開スクリプトに関する説明文を読む
  7. Google Docs Additional Terms を読む
  8. Publish をクリック。Google が評価して Script Gallery に公開。Google から公開された通知をメールで受け取る。

失敗したら

スクリプトの構文にミスがあると、保存や実行のときにエラーメッセージが出ます。

例;Cannot find method addMenu(string,Undefined). (#3)

メッセージにはエラー箇所のスクリプト内の行番号やどの時点で停止したかの情報があります。Script Editor を開いて点検してください。 この件については Troubleshooting and Debugging Scripts(トラブルシュートとデバッグ) に詳しく書かれています。



    * ユーザーガイド/目次
    1. ユーザーガイド/Google Apps Script の概要
    2. Getting Started/Google Apps Scriptをはじめよう
    3. Writing Scripts/スクリプトを書く
    4. Common Tasks/一般的なタスクのプログラミング
    5. Events/イベントへの応答スクリプト
    6. User Interfaces/ユーザーインターフェースの組み込み
    7. Using GUI Builder/GUI ビルダー の使用
    8. Security/セキュリティ
    9. Troubleshooting/トラブルシュートとデバッグ
    -- ユーザーガイド 3. スクリプトを書く : end -- 2011/10/30