解決したい課題
送付先ごとに別ファイルを添付して一斉メール送信したいです。
現状
下記サイトを参考に、コードをそのまま記述しているのですが、エラーとなります。
https://dev.classmethod.jp/articles/gas-email-with-files/
※スプレッドシートIDとメールアドレスの箇所は環境に合わせて変更しています。
エラー
~~Exception: Unexpected error while getting the method or property openById on object SpreadsheetApp.~~
上記エラーは解決しました。
現在は下記エラーで困っています。
TypeError: Cannot read property 'getLastRow' of null
コード
function send_invoice() { var spreadsheet = SpreadsheetApp.openById('{speadsheet_id_here}'); //SpreadsheetのID var sheet = spreadsheet.getSheetByName('send'); //シート名 var lastRow = sheet.getLastRow(); for(var i = 2; i <= lastRow; i ) { //getRangeの第1引数は行(1,2,3..)、第2引数はカラム(A,B,C...の順番を数値にしたもの) var filename = sheet.getRange(i,1).getValue() var report = DriveApp.getFilesByName(filename).next(); var to = sheet.getRange(i,2).getValue(); var name = sheet.getRange(i,3).getValue(); var flag = sheet.getRange(i,4).getValue(); if (flag != "NO"){ var title = "メール件名"; var content = name "様\n" "いつも大変お世話になっております。\n" "添付にて今月のインボイスをお送りいたします。\n\n" "どうぞよろしくお願いいたします。" ; GmailApp.sendEmail( to, title, content, {attachments: [report], //fromをGmail以外にする際は紐付けが必要。下記で説明。 from: 'email@example.com', cc: 'email@example.com', replyTo: 'email@example.com', name: 'My name here' } ); if (to == "") { break; } } } }
どなたか教えていただけませんでしょうか。
なぜ、エラーになるのか、どうすればエラー解決できるのか分からず、苦戦してます。
アドバイスいただけますと助かります。よろしくお願いいたします。
追記
タイトルに記載したエラーは、スプレッドシートIDの記述に間違いがあったことが原因でした。
正しい記述に修正したら、別のエラーになり前に進むことができました。
良かったです。
現在は下記のエラーが表示されている状況です。
Exception: Service invoked too many times for one day: email.
助けてくださる方いらっしゃいましたら、お願いいたします。
追記2
追記で記載したエラーを調べてみたら、1日に何度も実行すると制限されるとのことでしたので、
別のアカウントで試したところ、下記のエラーが表示されました。
TypeError: Cannot read property 'getLastRow' of null
ほげー、何が間違っているのやら。
var lastRow = sheet.getLastRow();のlastRowがグレーになってます(´・_・`)
どなたか引き続き、助けてください。
追記3
シート名が間違っていたことが原因でした。。
無事送信されるようになったのですが、メール本文が表示されない問題があり、現在も格闘中。。。
また、変数のnameが正しく機能しないです。。
グエー、なぜなのだ。
追記4
本文のコードは改行せずに、\nを使用して1つの''の中に記述したら正常に表示されるようになりました。
しかし、名前は${name}様と表示されてしまい、変数がそのまま表示されてしまいます。
ふんぐー、つらたん。
回答1件
あなたの回答
tips
プレビュー