前提・実現したいこと
ここに質問の内容を詳しく書いてください。
初心者です。
複数の人に、それぞれ別々のPDFファイル(コピー機で撮ってドライブに保存したもの)を
氏名・本文をドキュメントに差し込み、PDFのファイルは添付してGmailで送信することができるか
ご教示いただけないでしょうか。
スプレッドシートには、会社名・氏名・メールアドレス・PDF添付ファイルのフォルダーID
を記入しております。
なにとぞよろしくお願いいたします。
発生している問題・エラーメッセージ
下記のソースコードは、別々の宛先に氏名・本文を差し込んで、同じフォルダーIDのPDF添付ファイル(同内容のもの)を 一斉送信することが可能です。 希望は、別々の宛先に氏名・本文を差し込んで、<別々のフォルダーID>のPDF添付ファイル(<別内容のもの>)を 差し込んで送信することなのですが、その方法がわかりません。 <別内容>の添付ファイルを差し込むにはどうしたらよいか、ご教示願えないでしょうか。
該当のソースコード
function send_mail(){ /* スプレッドシートのシートを取得と準備 */ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得 /* ドキュメントを取得する */ var docTest=DocumentApp.openById("-----------"); //ドキュメントをIDで取得 var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得 /* メール表題、fromアドレス、差出人名を準備 */ var strSubject="テストタイトル"; //表題 var strSender="名前"; //差出人 /* シートの全ての行について社名、姓名を差し込みログに表示*/ for(var i=2;i<=rowSheet;i++){ var strSyokusyu=mySheet.getRange(i,1).getValue(); var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); var strSekininsha=mySheet.getRange(i,3).getValue(); var strShimei=mySheet.getRange(i,4).getValue(); var strFurigana=mySheet.getRange(i,5).getValue(); var strTo=mySheet.getRange(i,6).getValue(); var strfile=mySheet.getRange(i,7).getValue(); var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{●●}/,strShimei).replace(/{●●}/,strFurigana); //社名、姓名を置換 Logger.log(strBody); //ドキュメントの内容をログに表示 var folder=DriveApp.getFolderById('--------------'); var files=folder.getFiles(); var attachments=[]; while(files.hasNext()){ attachments.push(files.next()); } GmailApp.sendEmail( strTo, strSubject, strBody, {attachments:attachments} ); } } ### 試したこと ドキュメントの本文に、氏名等を差し込んで、同じ内容の添付ファイルを一斉送信することは可能です。 宛先ごとに個別の添付ファイルをつける方法が見つかりません。ご教示願えれば幸いです。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
うまくいかない、関数が実行できない、というのが具体的にどういう状況かわかりません。添付なしで送信できるなら関数は実行できるはず。関数を実行してエラーになるのか、添付をつけようとしているのに付かずに送信されるのかなどどの段階で困って何を解決しないといけないかを明確に言語化してほしいです。attachments: []→attachments: attachmentFilesにしたらどうでしょうか?
papinianusさんの指摘ともかぶりますが、そもそも attachments: [] で空の配列をセットしていることにお気づきでしょうか?
ご返答をありがとうございます。その後、関数は実行することができました。attachments:[attachmentFiles]と変えてみたのですが、添付をつけることができませんでした。
本当に申し訳ないのですが、コードを書いたなら本文に反映してください。ここはcodeブロックも改行も効かないからつらいです。あとattachmentfilesはそれ自身配列なのになぜさらに配列にラップするのでしょうか?attachments : attachmentFiles;でよいのでは?([]が不要では?)
ありがとうございます。attachmentFilesの[]をはずし、上記のコードに変更したのですが、ファイルの取得に問題があるように思われるのですが、添付がうまくいきません。ご教示願えないでしょうか。
ご回答ありがとうございます。別々の宛先に、氏名・本文を差し込み、同じフォルダーIDを一斉送信するコードはわかったのですが(上記ソースコードご参照)、別々のフォルダーIDを差し込み、個別に添付する方法が見つかりません。ご教示ねがえないでしょうか。
回答2件
あなたの回答
tips
プレビュー