HTTP GETリクエストでGoogle spreadsheetに追記する
Node.jsでGoogle spreadsheet にデータを書き込む で Google Drive APIでGoogle spreadsheet にデータを書き込む方法を紹介しましたが、 クライアント側の処理をもっと簡単にするためにREST APIを追加してHTTP GETリクエストでデータを書き込めるようにしてみました。
まずは操作されるspreadsheetを作成します。
次に、作成したspreadsheetにGoogle Apps Script(GAS)を追加します。
新しいウィンドウでスクリプトエディタが開きます。
/**
* 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;
}
/**
* GETリクエストの処理
*
* @param {event object} e - 要求パラメータ
* @return {object} HTML出力
*/
function doGet(e) {
// 処理本体
output = AddDataToSeet(e);
return output;
}
[!NOTE] doGet関数のパラメータ
e
については、このへんを参照してください。
[!NOTE] curlなどでアクセスしたい場合は、「全員」にしておかないと、認証画面に飛んでしまい、アクセスが完了しません。
例えば以下のコマンドでアクセスする
curl -L "«上でコピーしたURL»?v0=1&v1=2&v2=3"
実行すると、対象のスプレッドシートの最終行に以下のデータが追加されます。
スクリプトを修正した場合、再度「新しいデプロイ」を実行する必要がある。
または、「デプロイ」→「デプロイをテスト」で表示されるURLを使用すると、デプロイせずに現在の最新ソースで実行できる。
ただし、この場合、ユーザ認証が必須になってしまうので、ブラウザ等でアクセスする必要がある。
どうしてもcurlでアクセスしたい場合は、ヘッダにAuthorization: Bearer «アクセストークン»
を追加してやれば良い。(あまりおススメはしないけど)
やり方はここらへんを参考にしてください。
時刻の文字列を取得した場合、知らないタイムゾーンになっていて困ったときはタイムゾーンを変更すれば良い。
タイムゾーンを変更するにはこちら。
"timeZone": "Asia/Tokyo",
に変更