前提・実現したいこと
googleフォーム>スプレッドシート>googleカレンダー>googleサイトにて社外向けのZoomミーティング仮予約予定表を作成したい。
スプレッドシート>googleカレンダーの連携、googleサイトは完成。
下記コードでスプレッドシートがカレンダーに反映したため、googleフォームから「既存のスプレッドシートを選択」し、spreadSheetTabNameをgoogleフォームのタブ(シート1)を選択したが反映しない。
トリガーはregisterAll、Head、スプレッドシートから、フォーム送信時。
発生している問題・エラーメッセージ
例外: パラメーター (文字列、文字列、(クラス))は、カレンダーApp.Calendar.createEvent のメソッド シグネチャと一致しません。 (匿名) @ コード.gs:20 登録すべて @ コード.gs:19
該当のソースコード
// 設定 function getConfig() { return { spreadSheetId: '****', spreadSheetTabName: 'シート1' } } // カレンダーにイベントを登録 function registerAll() { var config = getConfig(); var spreadSheet = SpreadsheetApp.openById(config.spreadSheetId); var sheet = spreadSheet.getSheetByName(config.spreadSheetTabName); var eventIds = sheet .getDataRange() .getValues() .filter(function (e, i) { return i !== 0 && e[6] === ''; }).map(function (e) { var calendarEvent = CalendarApp.getCalendarById("****").createEvent( e[0], e[1], e[2], { description: e[3], location: e[4], guests: e[5] }); return [calendarEvent.getId()]; }); if (eventIds.length === 0) return; sheet.getRange('G2:G' + (eventIds.length+1) ).setValues(eventIds); } // 登録されたイベントをキャンセルして、シートから削除 function cancelAll() { var range = 'G2:G1000'; var config = getConfig(); var spreadSheet = SpreadsheetApp.openById(config.spreadSheetId); var sheet = spreadSheet.getSheetByName(config.spreadSheetTabName); sheet .getRange(range) .getValues() .filter(function (eventId) { return eventId[0] !== ''; }).forEach(function (id) { CalendarApp.getCalendarById("****").getEventById(id).deleteEvent(); }); sheet.getRange(range).clear(); }
試したこと
参考にしたURLのスプレッドシート(シート2)と、
googleフォームの回答欄(シート1)が異なるため反映しないのだと考え
description: e[3],
location: e[4],
guests: e[5]
を削除しました。
スプレッドシート(シート2)のままにすればカレンダーに反映しますが、トリガーやフォームと結びついてないため悩んでおります。
また、googleフォームが入力されたらの情報を反映するトリガーが必要と考え
function onFormSubmit(e) {
// フォームの回答を取得
let Name = e.values[1];// 登録者の氏名
let Start_time = new Date(e.values[2]);// 予約の開始時刻
let End_time = new Date(e.values[3]);// 予約の終了時刻
を追加してみましたが、益々エラーが増えて困っております…
当方初心者で、本屋にて初心者版を確認、HPで調べても分からず困っております。
補足情報(FW/ツールのバージョンなど)
ソースコード欄にあります「****」は本来入力しております。
その他空欄は入力しておりません。
回答1件
あなたの回答
tips
プレビュー