MISSION
Google Apps ScriptのWebアプリにpayloadでデータを渡したいKEY
eventObject.postData.contents
PROCESS
Google Apps Scriptでpayloadを受け取るWebアプリを作る(api.gs)
↓
STEPS
STEP1
そのWebアプリにpayloadを渡すコードを書く(コード.gs)
STEPS
STEP1
Apps Scriptの新規プロジェクトを作成します
STEP2
api.gsをコピーして貼り付けます
STEP3
const FOLDER_ID = "フォルダID" の右辺に、出力先となるGoogleドライブのフォルダIDを入れます
STEP4
Webアプリケーションとして導入します
STEP5
もう一つ新規でApps Scriptのプロジェクトを作成します
STEP6
コード.gsをコピーして貼り付けます
STEP7
const url = 'api.gsのWebアプリURL' の右辺に、STEP4で導入したWebアプリのURLを入れます
STEP8
createData()を実行します
Googleドライブの指定したフォルダにpayloadで渡したデータが保存されます。
ログにsuccessと保存したデータが表示されます。
今回使うコードは2つ
それぞれ別々のプロジェクトに書きます。
- api.gs
- コード.gs
api.gs /************************************ payloadはeventObject.postData.contentsで取得できる 取得してGoogleドライブに保存する ************************************/ function doPost(eventObject) { const contents = eventObject.postData.contents; const created = createFile(contents); return ContentService.createTextOutput(created).setMimeType(ContentService.MimeType.JSON); } /************************************ Googleドライブの指定フォルダにJSONファイルを保存する場合に使う ************************************/ const FOLDER_ID = "フォルダID";// create_fileで保存するときのGoogleドライブのフォルダID function createFile(json) { const content_type = "application/json"; const date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss:SSS');// ファイル名に追加する実行日時 const file_name = "GAS API" + date; const blob = Utilities.newBlob("", content_type, file_name); const file = blob.setDataFromString(json, "UTF-8"); const folder = DriveApp.getFolderById(FOLDER_ID); folder.createFile(file); return "success\n" + json; } |
コード.gs /************************************ これは別のファイルに書くコードだけど ************************************/ function createData() { const url = 'api.gsのWebアプリURL';// V8だとScriptApp.getService().getUrl()は/devになるので/execを決め打ちで指定しておく const payload = { "project": "PRO", "name": "namae" } const options = { "method": "post", "payload": JSON.stringify(payload), "contentType": "application/json" } const response = UrlFetchApp.fetch(url, options).getContentText(); Logger.log(response); } |