GASでjsonの値をうまく取り出せない
Q&A
Closed
解決したいこと
以下のような勤怠管理botをGASで作っています。
GASでSlackに勤怠確認フォーマット(何時に出勤したの?)を送る
→Slackから送信したデータ(*時に出勤したよ!)をjson形式で受け取る
→ユーザー名や出勤時間などを取り出してスプレッドシートに転記する
ユーザー名を取り出すところまではできたのですが、
どうしても取り出し方がわからないデータがあり、進めなくなってしまいました。
数時間ほどいろいろ試してみましたが、どうにもなりません・・・
解決方法を教えてください。
発生している問題・エラー
{
…(略)…
user={team_id=ABCD, username=suzuki, name=suzuki, id=XXXX},
↑この中身は取り出せる
state={
values={
LL20h={timepicker-action={selected_time=09:00, type=timepicker}},
t0C={plain_text_input-action={type=plain_text_input, value=明日休みます}}
}
},
↑この中身が取り出せない。”LL20h”などの変数?をどう扱えばよいかわかりません・・・
…(略)…
}
該当するソースコード
function doPost(e) {
const payload = JSON.parse(e['parameter']['payload']);
const name = payload.user.name;
const answers = payload.state.values;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
sheet.getRange(1, 1).setValue(payload);
sheet.getRange(1, 2).setValue(name);
sheet.getRange(1, 3).setValue(answers); ←ここまでは問題なし
let comment = '';
let time = '';
for (key in answers) {
if (answers[key].hasOwnProperty('plain_text_input-action')) {
sheet.getRange(1, 4).setValue('Y');
comment = answers.key.plain_text_input-action.value;
} else if (answers[key].hasOwnProperty('timepicker-action')) {
for (const timepicker of answers[key].timepicker-action.selected_time) {
time += timepicker.selected_time;
sheet.getRange(1, 5).setValue(time);
}
}
}
}
自分で試したこと
ソースコードにあるように変数に入れてみたりしたのですが全然ダメでした・・・
アドバイスしていただけると嬉しいです。