前提・実現したいこと
スプレッドシートとgasとchatworkを使って、期限切れのものを自動的にアラートを出す
期限切れ(残り1週間以内)と一致するものを送信する機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
TypeError: Cannot read property '9' of undefined at myFunction(コード:27:25)
該当のソースコード
/** * スプレッドシートの1週間以内の商品をチャットワークに送信するBot */ function sendMessage(token,body){ const cw = ChatWorkClient.factory({token:token}); cw.sendMessageToMyChat(body); } /** * チャットワークのマイチャットにメッセージを送信する * * @param {string} チャットワークAPIトークン * @param {string} マイチャットに送信するメッセージ本文 */ function myFunction() { const token = PropertiesService.getScriptProperties().getProperty('CW_TOKEN'); const sheet = SpreadsheetApp.openByUrl('//ここにURL'); const sheet1 = sheet.getSheetByName("//ここにシート名"); const lastRow = sheet1.getLastRow(); const lastColumn = sheet1.getLastColumn(); const values = sheet1.getRange(1, 1, lastRow,lastColumn).getValues(); Logger.log(values[15][9]); let body = '[info][title]1ヶ月期限[/title]'; for(var i = 6; i <= lastRow; i++) { Logger.log(values[i][9]); if(values[i][9] == "残り1週間以内"){ body += values[i][0] + '\n'; //販売日 body += values[i][2] + '\n'; //品番 body += values[i][3] + '\n' +'[hr]'; //商品名 } } Logger.log(body); body += '[/info]'; sendMessage(token, body); }
試したこと
Logger.log(values[i][9]);
のログ結果を見ると、
[20-04-22 08:23:28:086 PDT] 販売中 [20-04-22 08:23:28:088 PDT] 残り1週間以内 [20-04-22 08:23:28:090 PDT] 残り1週間以内 [20-04-22 08:23:28:092 PDT] 1ヶ月経過
とデータはきちんと取れていることが分かりました。
Logger.log(body);
のログ結果を見ると、
[20-04-22 08:23:29:849 PDT] TypeError: Cannot read property '9' of undefined at myFunction(コード:27:25)
となっています。
※この条件式をやるまではchatworkに連携できておりました。
https://qiita.com/quicksort/items/3b7776aba7bd2e97cf46
上記のように、undefindedを回避する方法を試しましたが、うまくいきませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/23 10:30
2020/04/24 01:34
2020/04/24 08:57