前提・実現したいこと
初心者です。
自社(工場)で故障が起きた際に、作業者がFORMを送信。それをトリガーにして、複数のメールアドレスに自動メールが行くような仕組みをつくろうとしています。
メール本文に故障の場所や設備種類などFORMで回答したいくつかの事項を織り込んだメールにしたいのですが…。また送付先の複数メールアドレスは、スプレッドシートにメアドのリストを対象としています。
発生している問題・エラーメッセージ
var factory = rangeValues2[LastRow][4];//工場
という行で、下記のエラーが出ます。
TypeError: Cannot read property '4' of undefined
該当のソースコード
GAS
1function sendMail() { 2 3 //故障報告がされたら、自動でリストにあるメアドへ通知メールを送る 4 5 // Googleドキュメントからメールの件名と本文を取得 6 var doc = DocumentApp.openById('XXX'); 7 var subject = doc.getName(); 8 var text = doc.getBody().getText(); 9 10 // Googleスプレッドシートからデータ取得 11 12 var ss = SpreadsheetApp.openById("ZZZ"); 13 //var spreadsheet = SpreadsheetApp.getActive(); 14 15 var sheet2 = ss.getSheetByName('故障報告');//故障報告シートを定義 16 var range2 = sheet2.getDataRange();//該当シートのデータ範囲を取得 17 var rangeValues2 = range2.getValues();//取得したデータ範囲の配列を取得 18 var LastRow = range2.getLastRow();//データ範囲の最終行を取得 19 20 var factory = rangeValues2[LastRow][4];//工場 21 var type = rangeValues2[LastRow][5];//設備種類 22 var reporter = rangeValues2[LastRow][3];//報告者メアド 23 var datetime = rangeValues2[LastRow][2];//報告日時(タイムスタンプ 24 var status = rangeValues2[LastRow][13];//状態 25 var demand = rangeValues2[LastRow][16];//要求 26 27 var replacedText = text.replace('{工場}',factory).replace('{設備種類}',type).replace('{報告者メアド',reporter).replace('{タイムスタンプ}',datetime).replace('{要求}',demand); 28 29 30 var sheet = ss.getSheetByName('故障通知メアド'); 31 var range = sheet.getDataRange(); 32 var rangeValues = range.getValues(); 33 34 for(var i = 1; i < rangeValues.length; i++) { 35 var name = rangeValues[i][0]; 36 var position = rangeValues[i][1]; 37 var email = rangeValues[i][2]; 38 39 var replacedText = text.replace('{氏名}', name).replace('{役職}', position); 40 41 MailApp.sendEmail(email, subject, replacedText);
試したこと
始めたばかりで、分からないことだらけですが、自分なりにネットでいろいろ探してみたのですが…。
お恥ずかしいような初歩的なことな気がしていますが、職場にも友人にも詳しい人がおらず、独学でやるしかない状況です。どうかよろしくお願いします。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー