コーディング開発初心者です。
何度かトライアンドエラーを繰り返し、アプリを作成していますが行き詰ってしまいました。
コミュニティの近似QAやこちらのマニュアルなどを参照しているのですが、自己解決できませんでした。
<やりたいこと>
アプリA:シフト提出アプリ
アプリB:日報アプリ
アプリAのテーブルレコードにシフト希望を複数登録し、プロセス更新で
①Google Calendarへイベント登録
②Google CalendarのイベントIDをテーブルに登録 ←※ここで挫折
③アプリBへテーブル1行を1レコードで新規レコード作成
Google CalendarのイベントIDを配列に組み込んで、更新(PUT)しようとしてもレコードに反映されません。
イベントIDの取得、配列の行IDの取得はできており、行IDを指定して配列に組み込んでも、新しい別の行として登録されてしまいます。
こちら、解決方法をご教示お願いいたします。
よろしくお願いいたします。
//ステータス更新処理//////////////////////////////////////////////////////
kintone.events.on([
'app.record.detail.process.proceed'
], function (event) {
var record = event.record;
var nStatus = event.nextStatus.value
var user = kintone.getLoginUser()['code'];
var table = record['subTable'].value;
if (nStatus === "シフト登録済"){
if (!record) {return event}
// Google認証チェック // 認証呼び出し
if (!gapi.auth2.getAuthInstance().isSignedIn.get()) {
gapi.auth2.getAuthInstance().signIn();
alert('Google認証されていません。');
return;
}
for (var i = 0; i < table.length; i++) {
var sDayTime = table[i].value['Gcalendar開始'].value
var eDayTime = table[i].value['Gcalendar終了'].value
// APIパラメータの設定
var params = {
'summary': record["event_name"].value,
'start': {'dateTime': sDayTime,'timeZone': 'Asia/Tokyo'},
'end': {'dateTime': eDayTime,'timeZone': 'Asia/Tokyo'},
};
// リクエストメソッドとパラメータの設定
var request;
// 公開済みイベント(更新)
if (table[i].value['event_id'].value) {
request = gapi.client.calendar.events.update({
'calendarId': calendar_id,
'eventId': table[i].value['event_id'].value,
'resource': params
});
// 未公開イベント(追加)
} else {
request = gapi.client.calendar.events.insert({
'calendarId': calendar_id,
'resource': params
});
}
// Googleカレンダーへ登録実行
request.execute(function(resp) {
if (resp.error) {alert('イベントの登録に失敗しました。');
} else {
var tableId = record["subTable"].value[i - 1].id
table.push({
"id": tableId,
"value":{
"event_id": {
'value': resp.result.id
}
}
});
}
},
function(error){alert('Google イベントIDの登録に失敗しました。')}
);
}//forクローズ
console.log(table)
var body = {
'app': kintone.app.getId(),
'id': record.$id.value,
'record': {
'subTable': {
"value": table
}
}
};
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body).then(function(success) {
alert('カレンダーにイベントを登録しました。');
//日報アプリへシフト登録
var postApp = 89;
var subTable = 'subTable';//テーブルのフィールドコード
kintone.api(kintone.api.url('/k/v1/records', true), 'POST', {
app: postApp,
records: event.record[subTable].value.map(function (row) {return row.value})
});
//location.reload();
}).catch(function(error){
alert('Google イベントIDの登録に失敗しました。')
})
};//ifクローズ
});//kintone.eventsクローズ
<console.log(table)>