Google Apps Scriptのライブラリ化
Google spreadsheet にREST APIを追加 その1 では
Spreadsheetに埋め込んだスクリプトにすべて記述しましたが、 新しいSpreadsheetを作成する度にコードをコピーするのは大変ですし、
何らかの不具合が見つかったときに複数のファイルをメンテナンスしなければならないのは現実的ではありません。
そこで、スプレッドシートにデータを登録する部分をライブラリ化し、Spreadsheetに埋め込んだスクリプトには最低限のコードだけ記載するようにしてみます。
まずはスクリプトライブラリを作成します
AddDataToSeet()
と同一)/**
* GETリクエストで渡されたデータをスプレッドシートの最終行に追加する
*
* @param {event object} e - 要求パラメータ
* @return {object} HTML出力
*/
function AddDataToSeet(e) {
Logger.log("AddDataToSeet start");
// 記録するシート(現在のスプレッドシートのアクティブなシート)
var sheet = SpreadsheetApp.getActiveSheet();
var dt = new Date(); // 日付
var v0 = ""; // デフォルト値
var v1 = "";
var v2 = "";
if(e.parameter.v0 !== undefined){
v0 = e.parameter.v0; // GETパラメータでv0が設定されていたら変数設定
}
if(e.parameter.v1 !== undefined){
v1 = e.parameter.v1; // GETパラメータでv1が設定されていたら変数設定
}
if(e.parameter.v2 !== undefined){
v2 = e.parameter.v2; // GETパラメータでv2が設定されていたら変数設定
}
// スプレッドシートの最終行に追加
sheet.appendRow([dt, v0, v1, v2]);
// HTML表示データを生成
var output = ContentService.createTextOutput();
output.setMimeType(ContentService.MimeType.TEXT);
// メッセージボディ
output.setContent("set data:" + "date=" + dt + ",v0=" + v0 + ",v1=" + v1 + ",v2=" + v2);
return output;
}
次に操作されるspreadsheetを作成します。
新しいウィンドウでスクリプトエディタが開きます。
[!NOTE] ID は node.jsで言うところの、以下の部分の「変数名」に相当する
var 変数名 = require('モジュール名')
/**
* GETリクエストの処理
*
* @param {event object} e - 要求パラメータ
* @return {object} HTML出力
*/
function doGet(e) {
// 処理本体
output = MySpreadsheetLib.AddDataToSeet(e);
return output;
}
以降、(その1 のデプロイ作業と同一です。