現在、メールの自動送信で、スプレッドシートより、宛先・件名・本文・ドライブ格納されてたファイルを添付し送信を実装するGASを実装しています。
ただ添付ファイルの格納先を種類ごとに複数作成しており、これを、同一のドライブに複数格納されているファイルから、必要なファイルを選択し添付、ということを実現したいのです。
同一ドライブにA社・B社・C社のファイルが存在。【A社様】、【B社様】、【C社様】****、で
****部分は同一名称のファイル。スプレッドシートに社名を入力する列を作成しそこに社名をいれることで、その社名が入っているファイルを添付する、ということをしたいです。
現在実装しているGASは以下になります。これにどのようなコードを追加したら実現できるかを、具体的に知りたいです。
<スプレッド>
A列=カテゴリ(下書きor送信)/B列=TO /C列=cc /D列=bcc /E列=件名 /F列=本文 /G列=署名
H列=添付ファイル格納先ドライブURL /I列=ステータス(完了or error) /J列=error文言
function myFunction() { //スプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); //データを取得 var rows = sheet.getLastRow()-2; //カラム業は除く var columns = sheet.getLastColumn(); var range = sheet.getRange(3,1,rows,columns); var datas = range.getValues(); //日付の取得---------------------------------------------- var today = new Date(); //日付を変数に代入---------------------------------------- var myHiduke = Utilities.formatDate(today, 'Asia/Tokyo', 'MM月dd日'); //配列を宣言 var array = []; //データ(各行)に対して繰り返し datas.forEach(function(data){ try{ var category = data[0]; var recipient = data[1]; var cc = data[2]; var bcc = data[3]; var subject = data[4] + myHiduke; var body =""; body +=data[5]; body +=data[6]; var folderUrl = data[7]; var attachments = []; var status = data[8]; if(status=== "完了"){ var result = "完了"; var message = ""; } else { if(folderUrl !== ""){ var id = folderUrl.replace("https://drive.google.com/drive/folders/",""); var folder = DriveApp.getFolderById(id); var files = folder.getFiles(); while(files.hasNext()){ var file = files.next(); attachments.push(file); } } var options = { cc:cc, bcc:bcc, attachments:attachments, } if(category === "下書き"){ GmailApp.createDraft(recipient,subject,body,options); //下書き } else if(category === "送信") { GmailApp.sendEmail(recipient,subject,body,options); //送信 } var result = "完了"; var message = ""; } } catch(e) { var result = "error"; var message = e; } finally{ array.push([result,message]); } ); var outputRange = sheet.getRange(3,9,rows,2); outputRange.setValues(array); }
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
あなたの回答
tips
プレビュー