WebHookにGoogle App Scriptを使ったGoogle Spreadsheetへの転送
スケジュールとWebHookの活用にてご紹介した、WebHookの送信先にGoogle App Scriptを使ってGoogle Spreadsheetに集計データを転送するためのサンプルスクリプトです。本ガイドでは、Google SpreadsheetやGoogle App Scriptの使い方については割愛しますが、みなさまの参考になれば幸いです。
main.gs
var STRIPE_SECRET_KEY = "(あなたのWebHookのシークレットキー)"
var OUTPUT_SHEET_NAME = "(出力先にしたいGoogle Spreadsheetのシート名)"
function doGet(e) {
// GETリクエストが来た時は空文字列を出力する
var output = ContentService.createTextOutput("");
output.setMimeType(ContentService.MimeType.TEXT);
return output;
}
function doPost(e) {
// POSTされたJSONテキストをパース
var responseJSON = JSON.parse(e.postData.getDataAsString());
if (responseJSON.type != 'sigma.scheduled_query_run.created') {
return outputText('not supported');
}
// Stripe SigmaのWebhookからファイルのURLを取得する
var fileURL = responseJSON.data.object.file.url
// CSVファイルを取得
var csvText = fetchStripeFile(fileURL)
// CSVをパース
var csv = Utilities.parseCsv(csvText);
// スプレッドシートオブジェクトを取得
var ss = SpreadsheetApp.getActive()
var sheet = ss.getSheetByName(OUTPUT_SHEET_NAME)
// CSVの内容をシートに上書き転記する
sheet.clear({ contentsOnly: true })
sheet.getRange(1, 1, csv.length, csv[0].length).setValues(csv);
// OKを返す
return outputText('ok');
}
// StripeのサーバーからCSVファイルをダウンロードする
function fetchStripeFile(url) {
var options = {
'method' : 'get',
'headers' : {
"authorization": "Bearer " + STRIPE_SECRET_KEY
}
};
var response = UrlFetchApp.fetch(url, options);
var result = response.getContentText()
return result
}
// プレーンテキストを出力する
function outputText (text) {
var output = ContentService.createTextOutput(text + "\n");
output.setMimeType(ContentService.MimeType.TEXT);
return output;
}