前提・実現したいこと
GASからGoogleカレンダーに終日イベントを登録したい
発生している問題・エラーメッセージ
複数日に渡り終日イベントを登録する場合は予定と開始日に加えて 終了日を付け加えることで対応可能だが、 終了予定日のみ一日加算しないとカレンダー上で想定通りの表示にならない とのことだが、加算したらにっすがおかしくなる。
該当のソースコード
case "2": // 終了日時の追加 if ( messageText.match(dateExp)) { var [matched, end_month, end_day] = messageText.match(dateExp); cache.put("type", 3); cache.put("end_month", end_month); cache.put("end_day", end_day); //予定名の質問 var year = new Date().getFullYear(); //var year = 2020; var endDate = new Date(year, cache.get("end_month") - 1, cache.get("end_day") + 1 ); reply(replyToken,"予定終了日は\n" + EventFormat(endDate) + "\nですね。\n\n最後に予定名を教えてください。"); break; }else{ reply(replyToken, "予定追加処理中です。\n「キャンセル」\nで追加作業をキャンセルします。"); break; } case "3": // 最終確認 cache.put("type", 4); cache.put("title", messageText); var [title, startDate, endDate] = createData(cache); //予定追加の確認 replyPlans(replyToken, "【予定名】:" + title, "予定日:\n" + EventFormat(startDate)+ "\n予定終了日:\n" + EventFormat(endDate), "予定を追加しますか?\n 「はい」か「いいえ」で\nお知らせください。"); break; case "4": if (messageText === "はい") { cache.remove("type"); var [title, startDate, endDate] = createData(cache); //↓↓↓↓↓↓↓↓↓↓↓↓↓該当コードかと↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ CalendarApp.getDefaultCalendar().createAllDayEvent(title, startDate, endDate); reply(replyToken, "お疲れ様です\nGoogleカレンダーに予定を追加しました"); } else if (messageText === "いいえ") { cache.remove("type"); reply(replyToken, "予定の追加をキャンセルしました。"); } else{ reply(replyToken, "「はい」か「いいで」でお答えください。"); break; } break; } } } function createData(cache) { var year = new Date().getFullYear(); //var year = 2020; var title = cache.get("title"); var startDate = new Date(year, cache.get("start_month") - 1, cache.get("start_day")); var endDate = new Date(year, cache.get("end_month") - 1, cache.get("end_day") + 1 ); return [title, startDate, endDate]; } function EventFormat(Date) { var y = Date.getFullYear(); var m = Date.getMonth() + 1; var d = Date.getDate(); var w = Date.getDay(); var weekname = ['日', '月', '火', '水', '木', '金', '土']; m = ('0' + m).slice(-2); d = ('0' + d).slice(-2); return y + '年' + m + '月' + d + '日 (' + weekname[w] + ')\n'; }
試したこと
var endDate = new Date(year, cache.get("end_month") - 1, cache.get("end_day") + 1 );
+1 にしたらカレンダーに登録はされるが
終了日(endDate)が1年後のよく分からない日付になる
補足情報(引用記事になります!!!!!!!!!!!!!!!!)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 06:00