前提・実現したいこと
GASを使ってGoogleカレンダーの情報をLINEに通知したい。
発生している問題・エラーメッセージ
以下のコードをコピペして作成し、実行したところ、401エラーとなります。
LINE Notify + GoogleAppsScript + Googleカレンダーで明日の予定を絶対忘れない
Exception: https://notify-api.line.me のリクエストに失敗しました(エラー: 401)
該当のソースコード
function myFunction() { // カレンダーID var calId = "カレンダーID"; // LINE Notifyのアクセストークン var key = "access token"; var url = "https://notify-api.line.me/api/notify"; var cal = CalendarApp.getCalendarById(calId); var now = new Date(); var tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1); // googleカレンダーより明日の予定を配列で取得。 var tomorrowEvent = cal.getEventsForDay(tomorrow); // LINE Notifyに送るメッセージ var msg = ""; // 予定がない時 if(tomorrowEvent.length === 0){ msg = "明日の予定はありません。"; } // 予定がある時 else{ msg += "明日の予定は" + String(tomorrowEvent.length) + "件あります。\n\n"; msg += allPlanToMsg(tomorrowEvent); } var jsonData = { message: msg } var options = { "method" : "post", "contentType" : "application/x-www-form-urlencoded", "payload" : jsonData, "headers": {"Authorization": "Bearer " + key} }; var res = UrlFetchApp.fetch(url, options); } // イベントの配列をテキストにして返す function allPlanToMsg(events/* array */){ var msg = ""; events.forEach( function(event, index){ var title = event.getTitle(); var start = event.getStartTime().getHours() + ":" + ("0" + event.getStartTime().getMinutes()).slice(-2); var end = event.getEndTime().getHours() + ":" + ("0" + event.getEndTime().getMinutes()).slice(-2); // 予定が終日の時 if( event.isAllDayEvent() ){ msg += String(index + 1) + "件目: " + title + " 終日の予定です。\n\n"; return; } msg += String(index + 1) + "件目: " + title + " " + start + "~" + end + "\n\n"; }); return msg; }
試したこと
認証の問題かと思いましたので、以下のページを参考に
「ウェブアプリケーションとして導入」の公開設定を「anyone even anonymous」に変更しましたが、解決しませんでした。
初歩的な質問で大変恐縮ですが、ご教示いただけますと幸いです。
あなたの回答
tips
プレビュー