概要
ウェブアプリとしてデプロイしているGASのスクリプトのログをスプレットシートに出力する方法を簡単にまとめる。
前提
ウェブアプリとしてデプロイし、POSTリクエストで動作するGASのコードは下記
function doPost(e) {
Logger.log('関数は実行されました');
// オブジェクトの定義
const data = {
message: "Hello, World!",
};
const jsonData = JSON.stringify(data); // jsのオブジェクトからJSONを生成
const jsonOutput = ContentService.createTextOutput(jsonData); // GASから返すコンテンツを作成
jsonOutput.setMimeType(ContentService.MimeType.JSON); // 返すコンテンツのMimeタイプを明示的にJSONに設定
return jsonOutput;
}
方法
-
post_logという名前でスプレットシートを作成(筆者はわかりやすいようにGASのファイルと同階層にpost_logのスプレットシートを追加した。)
-
post_logのスプレットシートを開き、スプレットシートのURLからスプレットシートのIDを確認・メモ(スプレットシートのIDはスプレットシートのURLの
/spreadsheets/d/ここがスプレットシートのID/edit
の「ここがスプレットシートのID」の部分を確認) -
下記のようにGASのコードを修正
function doPost(e) { // スプレッドシートIDを指定 var spreadsheetId = 'スプレットシートのID'; // スプレッドシートを開く var sheet = SpreadsheetApp.openById(spreadsheetId).getActiveSheet(); // ログをスプレッドシートに追加 sheet.appendRow(['関数は実行されました', new Date(), JSON.stringify(e.parameters)]); // オブジェクトの定義 const data = { message: "Hello, World!", }; const jsonData = JSON.stringify(data); // jsのオブジェクトからJSONを生成 const jsonOutput = ContentService.createTextOutput(jsonData); // GASから返すコンテンツを作成 jsonOutput.setMimeType(ContentService.MimeType.JSON); // 返すコンテンツのMimeタイプを明示的にJSONに設定 return jsonOutput; }
-
GASのコードをデプロイ
-
デプロイ時に下記が出たら「アクセスを承認」をクリック
-
警告が出る可能性があるが、自身が作ったスプレットシートに自身のGASでアクセスするだけなので権限を付与
-
デプロイ後のウェブアプリのURLをコピーしPOSTのリクエストを送信(筆者は自前のSlackコマンドと当該のGASを紐づけているので、そちら経由で実行してみる)
-
スプレットシートを確認し、下記のようにログが出ていたら完了
参考文献