前提・実現したいこと
LINE公式ドキュメントを参考にGASを使って「日時選択アクション」の
APIをを用いて現在あるBOTに日時選択アクションを実装したいです。
発生している問題・エラーメッセージ
公式ドキュメントや 引用記事を参考にしましたが どのように実装していけば良いのか 路頭に迷っております。 色々、記述を書き換えてみましたが うまく動作しません、、、
該当のソースコード
if (type === null) { //予定の追加 if (messageText === "予定の追加") { cache.put("type", 1); //開始日時の質問 replyPlans(replyToken, "予定日をいずれかの形式で教えてください!", "【 06/18 】or【 6月18日 】", "などの形式なら大丈夫です!"); //今日、7日間の予定の取得 } else if (messageText.match("今日の予定")) { reply(replyToken, getEvents()); } else if (messageText.match("今週の予定")) { reply(replyToken, notifyWeekly()); } else { //処理方法の返答 replyPlans(replyToken, "「予定の追加」で予定追加します", "「今日の予定」で今日の予定をお知らせします。", "「今週の予定」で7日間の予定をお知らせします!"); } } else { //キャンセル処理 if (messageText === "キャンセル") { cache.remove("type"); reply(replyToken, "予定追加のキャンセルをしました"); return; } switch(type) { case "1": // 開始日時の追加 if ( messageText.match(dateExp)) { var [matched, start_month, start_day] = messageText.match(dateExp); cache.put("type", 2); cache.put("start_month", start_month); cache.put("start_day", start_day); //終了日時の質問 var year = new Date().getFullYear(); //var year = 2020; var startDate = new Date(year, cache.get("start_month") - 1, cache.get("start_day")); reply(replyToken,"予定日は\n" + EventFormat(startDate) + "\nですね!\n\n次に予定終了日をお知らせください。"); break; }else{ reply(replyToken, "予定追加処理中です。\n「キャンセル」\nで追加作業をキャンセルします。"); break; } 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")); 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(new Date(endDate.setDate(endDate.getDate() - 1))), "予定を追加しますか?\n「はい」か「いいえ」でお知らせください。"); break; case "4": if (messageText === "はい") { cache.remove("type"); var [title, startDate, endDate] = createData(cache); CalendarApp.getDefaultCalendar().createAllDayEvent(title, startDate, endDate); reply(replyToken, "予定を追加しました"); } 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")); endDate = new Date(endDate.setDate(endDate.getDate() + 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'; } function replyPlans(replyToken, message, message2, message3) { var url = "https://api.line.me/v2/bot/message/reply"; UrlFetchApp.fetch(url, { "headers": { "Content-Type": "application/json; charset=UTF-8", "Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN, }, "method": "post", "payload": JSON.stringify({ "replyToken": replyToken, "messages": [{ "type": "text", "text": message, },{ "type": "text", "text": message2, },{ "type": "text", "text": message3, }], }), }); return ContentService.createTextOutput(JSON.stringify({"content": "post ok"})).setMimeType(ContentService.MimeType.JSON); } function reply(replyToken, message) { var url = "https://api.line.me/v2/bot/message/reply"; UrlFetchApp.fetch(url, { "headers": { "Content-Type": "application/json; charset=UTF-8", "Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN, }, "method": "post", "payload": JSON.stringify({ "replyToken": replyToken, "messages": [{ "type": "text", "text": message, }], }), }); return ContentService.createTextOutput(JSON.stringify({"content": "post ok"})).setMimeType(ContentService.MimeType.JSON); } } function HmFormat(date){ return Utilities.formatDate(date, "JST", "HH:mm"); }
補足情報(引用記事になります!)
引用記事はこちらになります!
https://arukayies.com/gas/line_bot/datetime-picker-action
公式ドキュメントはこちら
https://developers.line.biz/ja/reference/messaging-api/#uri-action
回答1件
あなたの回答
tips
プレビュー