Google AppsScriptの添付ファイル
Google Apps Scriptに複数の添付ファイルを入れて電子メールで送信すると、問題が発生します。
これを行うコードの部分は
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF);
var file2 = DriveApp.getFilesByName("test.pdf");
DriveApp.getFileById(doc.getId()).setTrashed(true);
emails.forEach(function(email) {
MailApp.sendEmail(email, "Attachments - " + rows[0][0], "Hello!", {
name: 'Good Practices',
attachments: [file.getAs(MimeType.PDF), file2]
});
しかし、これを実行すると、次の問題が発生します。
例外:無効な引数:添付ファイル(151行目、ファイル「Eメール」)
.doc file1が入力されてからPDFに変換され、別のfile2がすでにPDFになっています。
file1だけで実行するとメールを送信できますが、file1とfile2で実行するとこのエラーが発生します。誰かが何が起こっているのか知っていますか?
私はここでスタックで読んだ別の提案をたくさん実行しましたが、誰もうまくいきませんでした。
回答
1 Marios
説明:
問題はそれでfile2
はないタイプのFILEが、オブジェクトのFileIteratorのクラス。
一方、file1
はFILEタイプであり、これが正しく機能している理由です。
電子メールを送信する前に、ファイル名が存在するかどうかを確認することもお勧めします。
解決:
function myFunction() {
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF); // this is a file
var folder = DriveApp.getFolderById(folderId); // put here the id of the folder
var file2 = folder.getFilesByName("test.pdf"); // this is a file iterator
DriveApp.getFileById(doc.getId()).setTrashed(true);
if (file2.hasNext() ) {
MailApp.sendEmail(emailAddress, "Attachments - " + rows[0][0], "Hello!",{
name: 'Good Practices',
attachments:
[
file1.getAs(MimeType.PDF),
file2.next().getAs(MimeType.PDF)
]
})};
}
参照:
- getFilesByName(name)
- createFile