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);
}
|