| Googleを追いかけろ! |
| |
| . | ||
| home >> ユーザーガイド 2.Google Apps Scriptをはじめよう | ||
|
![]() |
既存のスクリプトのインストールと実行
Google Apps Script を利用する簡単で最も手っ取り早い方法はScript Gallery から既存のスクリプトをインストールすることです。
これらは Google Apps Script team のメンバーやユーザーが寄付してくれたものです。
次の手順で進めてください。
株価情報に関するスクリプトをインストールしてみましょう
株価情報を取得するスクリプトです。ユーザーであるPeter Pongさんの許可を得ています。Googl社ではスクリプトには手を加えていません。
したがってインストールに関するすべての責任はGoogle者ではなく開発者と所有者によるものです。
スクリプトのインストールと実行
Stock Price スクリプトの概要
Tools > Scripts > Script Editor と選択します。スクリプトは自動的にロードされます。このスクリプトには onOpen と getStock
という2つの関数が含まれています。
onOpen 関数は Get Stockの項目を持つ Finance というメニューをスプレッドシートに追加します。スプレッドシートを開くと
onOpen 関数はいつも自動的にこのプログラムを実行します。
getStock 関数はカラムヘッダーを提供し、A2セル以下のA列に入力された銘柄記号を得て、その銘柄情報の検索結果をシートに表示します。
参考:finance_services
Stock Price スクリプトを細かく調べてみます
onOpen() 関数から見ていきます。
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [ {name: "Get Stock", functionName: "getStock"}];
ss.addMenu("Finance", menuEntries);
}
function getStock() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1).setValue("Symbol");
sheet.getRange(1, 2).setValue("Name");
sheet.getRange(1, 3).setValue("Exchange");
sheet.getRange(1, 4).setValue("TradeTime");
sheet.getRange(1, 5).setValue("Price");
var row = 2;
while (true) {
if (!sheet.getRange(row, 2).getValue()) {
var symbol = sheet.getRange(row, 1).getValue();
if (!symbol) break;
Logger.log("Updating symbol: " + symbol);
var stockInfo = FinanceApp.getStockInfo(symbol);
sheet.getRange(row, 2).setValue(stockInfo.name);
sheet.getRange(row, 3).setValue(stockInfo.exchange);
sheet.getRange(row, 4).setValue(stockInfo.tradetime);
sheet.getRange(row, 5).setValue(stockInfo.price);
} else {
Logger.log("Already updated: " + symbol);
}
row++;
}
}
関数は var sheet = SpreadsheetApp.getActiveSheet(); を宣言した後、そのときのアクティブシートを取得してシートオブジェクトに読み込ませます。
アクティブシートとは常にスクリプトの存在するスプレッドシートのことです。
次の5行で getRange() メソッドを使いながら A1 から A5 の5つのセルを識別します。そして setValue() メソッドを使って
対応する列のセルにカラムラベルを挿入していきます。setValue() においては Symbol, Name,・・ 等のラベルが引数になります。
メソッドにデータを受け渡す役割をするのが引数です。渡されたデータは文字列データのプレーンテキストになっています。また、それぞれの引数はコーテーションマーク(引用符)で囲みます。
var row = 2; のラインで2の初期値を持つ変数の行を作成します。これは A列 の各行にある株式銘柄リストを反復して数え出す処理のための変数です。そして株式の正しい情報を作り出します。
while (true) の構文には if ループ 内でA列のセルに株式銘柄が入力されているかどうかを連続的にチェックするプロセスが織り込まれています。
各セルの値は、シンボル変数に読み込まれ、もし変数が値を持っていれば、FinanceAppクラス の getStockInfo() メソッドが
それぞれの銘柄に対し name, exchange, trading time, price を得るように呼び出されます。さらに setValue() がシートの銘柄行の適切な位置に書き込むように呼び出されます。
if (!symbol) break; の行はシンボル変数に銘柄名が無いときにはループから出るように指示するコードです。
感嘆符は否定的な状態 - ここでは値の無いことをチェックされている状態を指します。
スプレッドシートの2行目から8行目まで埋まっているとしましょう。row++; 文はループプログラムの繰り返しを一回としたカウンターとして
行変数を増やしていく役目です。これよって行変数が9までくると、この行には銘柄名が無いことを理解して、この時点で break によるループからの脱出用スクリプトが呼び出されて終了します。
Logger.log("Updating symbol: " + symbol); はスクリプトが実行されたときに各銘柄名に対するログメッセージを記録します。
ログメッセージを見れば、使用中のスプレッドシート上の銘柄名以外のすべてのデータをクリアできます。Script Editor を開いて
View > Logs を見てください。各銘柄に対するログメッセージがパネルに表示されています。
Stock Price スクリプトを変更してみます
次の一連のイベントを観察してみます。
再実行したらデータが更新されるようにスクリプトを変更してみます。
// if (!sheet.getRange(row, 2).getValue())
// } else {
// Logger.log("Already updated: " + symbol);
// }
コメントアウトが完了するとエディター内のコードの色が変わります。
--ユーザーガイド 2. Google Apps Scriptをはじめよう : end -- 2011/10/30
|