質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Q&A

0回答

397閲覧

【GAS】メール自動送信:同一のドライブに格納されている複数のファイルから特定の文言が入っているもののみ添付する方法

ne-chan

総合スコア0

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

0グッド

0クリップ

投稿2021/09/18 10:05

編集2021/09/18 10:39

現在、メールの自動送信で、スプレッドシートより、宛先・件名・本文・ドライブ格納されてたファイルを添付し送信を実装する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); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/09/18 10:33

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問