質問編集履歴

2 補足情報に、現在試している(うまく動いていません)スクリプトを追記しました。

seijisam

seijisam score 5

2018/03/29 09:18  投稿

GASで複数の企業に複数の異なるファイルを添付して一斉メール送信する際、空白のセルが存在すると実行できない
### 前提・実現したいこと
```### 前提・実現したいこと
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/ツールのバージョンなど)
### 補足情報(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: []
     }
   );
   
 }
コード
```
  • Google Apps Script

    2013 questions

    Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

1 初心者マークを付けました

seijisam

seijisam score 5

2018/03/28 10:07  投稿

GASで複数の企業に複数の異なるファイルを添付して一斉メール送信する際、空白のセルが存在すると実行できない
### 前提・実現したいこと
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/ツールのバージョンなど)
  • Google Apps Script

    2013 questions

    Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る