GoogleスプレッドシートとGASを用いて、複数の企業にそれぞれの企業別に異なる複数のファイルを添付して、メールを一斉送信したい。 ただし、企業によって添付するファイルの数が異なり、添付ファイルが1つだけのところもあれば、2つ、あるいは3つの企業もあります。 ![イメージ説明](ccbdc8dc28a04611568ba01b7801d891.gif) ### 発生している問題・エラーメッセージ 添付のように添付ファイル名を呼び出すセルが空白だと、そこでスクリプトの実行が止まってしまいます。 空白はそのままスキップし(添付なし)で、次の行に移動して欲しいのですが。 ### 該当のソースコード //------------- Google Driveから添付ファイルを取得 ----------------------- // 添付ファイル用の配列を作成 var attachmentFiles = new Array(); // 添付ファイル1~3を取得 var folder = DriveApp.getFolderById('-----------------------'); //(添付1ファイル)のフォルダIDで取得 var file1 = folder.getFilesByName(mySheet.getRange(i,3).getValue()).next(); //(添付1ファイル)のファイル名を取得 var folder = DriveApp.getFolderById(''-----------------------'); //(添付2ファイル)のフォルダIDで取得 var file2 = folder.getFilesByName(mySheet.getRange(i,4).getValue()).next(); //(添付2ファイル)のファイル名を取得 var folder = DriveApp.getFolderById(''-----------------------'); //(添付3ファイル)のフォルダIDで取得 var file3 = folder.getFilesByName(mySheet.getRange(i,5).getValue()).next(); //(添付3ファイル)のファイル名を取得 ### 試したこと 素人で全く分からないのですが、指定されたセルにデータが存在しない(空白)のときは、戻り値はブランクで処理終了(次の行に移動)といった処理が出来ないものかと思うのですが、そういったことは可能でしょうか? 宜しくご教授願います。 ### 補足情報(FW/ツールのバージョンなど) ```function sendMailWithAttachments(){ /* スプレッドシートのシートを取得と準備 */ var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得 /* ドキュメント「メール本文」を取得する */ var docTest=DocumentApp.openById("-----------------------"); //メール本文のドキュメントをIDで取得 var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得 /* メール表題、fromアドレス、差出人名を準備 */ var strSubject="複数添付ファイルの送付"; //表題 var strFrom="-----------------------"; //From var strSender="-----------------------"; //差出人 // 添付ファイル用の配列を作成 var attachmentFiles =[]; var arr = mySheet.getRange(2, 2, 4, 4).getValues();// //処理負荷軽減のためまとめてフォルダー情報を取得 var folders = [ DriveApp.getFolderById('-----------------------'), //(添付1ファイル)のフォルダIDで取得 DriveApp.getFolderById('-----------------------'), //(添付2ファイル)のフォルダIDで取得 DriveApp.getFolderById('-----------------------') //(添付3ファイル)のフォルダIDで取得 ]; for(var i = 0, i= arr.length; i <1; i++){ var strTo=arr[i][0].getValue().next(); //送付先メールアドレスを取得 //添付ファイル1~3を取得(空白ならスキップ) if(arr[i][1] != ''){ attachmentFiles.push(folders[0].getFilesByName(arr[i][1]).next()); } if(arr[i][2] != ''){ attachmentFiles.push(folders[1].getFilesByName(arr[i][2]).next()); } if(arr[i][3] != ''){ attachmentFiles.push(folders[2].getFilesByName(arr[i][3]).next()); } } var strBody=strDoc /* メールを送信 */ GmailApp.sendEmail( strTo, //toアドレス strSubject, //表題 strBody, //本文 { from: strFrom, //fromアドレス name: strSender, //差出人 attachments: [] } ); } コード
初心者マークは付けておきましょうね。
回答3件
あなたの回答
tips
プレビュー