GASを用いたスプシとDiscordのリマインダーに関して

実現したいこと

  1. スプシを参照し、期日の近いタスクをDiscordの特定テキストチャンネルへ通知する
  2. G列のチェックボックスがチェック済みの行は通知対象外とする

前提

  • 見よう見まねで書いたコードは以下となります。
  • 情報元となるスプシのサンプル画像とDiscord側での出力結果も貼り付けております。
  • 【スプシ】イメージ説明
  • 【Discord出力結果】イメージ説明

発生している問題・エラーメッセージ

【実行ログ】 TypeError: Cannot read properties of undefined (reading '7') DiscordSend @ コード.gs:20 【Discord上】 スプシG列の完了フラグ(チェックボックス)がチェック済みでもDiscord上に通知されてしまう。

該当のソースコード

JavaScript

1function DiscordSend() {2 var mySs = SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得3 var Sheet = mySs.getSheetByName('タスク一覧'); // シート名を取得4 var today = new Date(); //今日の日付を取得5 6 /* 255行目までループ */7 for (var i = 1; i <= 255; i++) {8 var category = Sheet.getRange(i, 1).getValue(); //A列 「カテゴリー」を取得 9 var to_do = Sheet.getRange(i, 3).getValue(); //C列 「作業内容」を取得10 var detail = Sheet.getRange(i, 4).getValue(); //D列 「詳細」を取得11 var limit = Sheet.getRange(i, 6).getValue(); //F列「期限」を取得12 var status = Sheet.getRange(i, 9).getValue(); //I列「担当」を取得13 var importance = Sheet.getRange(i, 10).getValue(); //J列「memo」を取得14 var date_limit = new Date(limit); //F列「期限」のDateを作成15 var dt = date_limit.getTime() - today.getTime(); //date_limitから今日の日付を引く16 var day = Math.ceil(dt / 1000 / 60 / 60 / 24); //日付に変換17 18 /* G列完了フラグ(チェックボックス)の有無判定 */19 var value = Sheet.getDataRange().getValues();20 if( value [i] [7] === true ) {21 checkvalue = checkvalue + values[i][1];22 }23 24 else if (0 <= day && day <= 2) { //締め切り当日~2日前を抽出25 var strBody1 = "カテゴリー:" + category + "\n"26 + to_do + "の作業に取り掛かりましょう。\n" /* 改行 */27 + "期限まであと" + day + "日です!。\n" /* 改行 */28 + "【詳細】\n" /* 改行 */29 + detail + "\n" /* 改行 */30 +"期限:" + date_limit + "\n";31 + "\n" /* 改行 */32 33 const WEBHOOK_URL = 'https://discord.com/api/webhooks/xxxx; // ★★★DiscordのWebhook URL34 35 const payload = {36 'username': 'リマインダー',37 'content': strBody1,38 'tts': false,39 }40 41 const param = {42 'method': 'POST',43 'headers': {44 'Content-type': 'application/json'45 },46 'payload': JSON.stringify(payload)47 }48 49 UrlFetchApp.fetch(WEBHOOK_URL, param);50 }51 }52}

試したこと

GASを扱っているサイトの確認

コメントを投稿

0 コメント