実現したいこと
- スプシを参照し、期日の近いタスクをDiscordの特定テキストチャンネルへ通知する
- G列のチェックボックスがチェック済みの行は通知対象外とする
前提
発生している問題・エラーメッセージ
【実行ログ】 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 URL 34 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を扱っているサイトの確認

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。