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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

1271閲覧

スプレッドシートから参照して複数の企業に、3パターンの中から添付したい。

K-SK

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/02/05 07:47

前提・実現したいこと

GASを利用して複数の会社にメールを送りたい(下書き作成)と思っております。
スプレッドシートに送信パターン(会社名・担当者名・メールアドレス・メール本文・添付ファイル1のドライブURL・添付ファイル2のドライブURL・添付ファイル3のドライブURL)がございます。

3つ添付がある会社は問題ございませんが、1つのみの会社や2つのみの会社がある場合は下書きに作成されません。
if文を使えば出来るのではと思い、いろいろ調べてますが、全くの初心者で解決策が見つかりません。
ご教授頂けませんでしょうか?

発生している問題・エラーメッセージ

コード作成が出来ない。

該当のソースコード

//プログラム0|メール送信 function CreateMails() { //プログラム1|スプレッドシート指定 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName('メールリスト'); var MailList = sheet1.getDataRange().getValues(); //プログラム2|ログ用の配列設定 var myLog = []; //プログラム3|シート「メールリスト」のメールごとに送信 for(var i = 1; i <= MailList.length; i++) { var mailaddress = MailList[i][3]; //プログラム4|行ごとの情報を取得 var company = MailList[i][1];//会社名 var name = MailList[i][2];//名前 var title = MailList[i][4];//メールタイトル //プログラム5|Googleドキュメントをメール本文として取得 var docurl = MailList[i][6];//あらかじめ作っておいたGoogleドキュメントURLを取得(中身がメール本文) var docid = docurl.split('/')[5];//GoogleドキュメントをIDで取得 var doc = DocumentApp.openById(docid); //Googleドキュメントを取得 var body = doc.getBody().getText().replace('{会社名}',company).replace('{名前}',name); //Googleドキュメント内の{会社名}{名前}を置換 //プログラム6-1 添付ファイル1 var fileurl = MailList[i][7];//添付ファイルURL var fileurls = fileurl.split('/'); var fileid = fileurls[5]; var file = DriveApp.getFileById(fileid); //プログラム6-2 添付ファイル2 var fileurl2 = MailList[i][8];//添付ファイルURL2 var fileurls = fileurl2.split('/'); var fileid = fileurls[5]; var file2 = DriveApp.getFileById(fileid); //プログラム6-3 添付ファイル3 var fileurl3 = MailList[i][9];//添付ファイルURL3 var fileurls = fileurl3.split('/'); var fileid = fileurls[5]; var file3 = DriveApp.getFileById(fileid); //プログラム7|メール下書き GmailApp.createDraft(mailaddress,title,body,{attachments:[file,file2,file3]}); } }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

3つ添付がある会社は問題ございませんが、1つのみの会社や2つのみの会社がある場合

これがスプレッドシート上どのように表現されているのか↓からでは理解不能です。

スプレッドシートに送信パターン(会社名・担当者名・メールアドレス・メール本文・添付ファイル1のドライブURL・添付ファイル2のドライブURL・添付ファイル3のドライブURL)がございます。

概念的には下記のように対応できるので、もともとこれを作った方に再依頼してください。

javascript

1let files = []; 2if(MailList[i][7]) { 3 //プログラム6-1 添付ファイル1 4 var fileurl = MailList[i][7];//添付ファイルURL 5 var fileurls = fileurl.split('/'); 6 var fileid = fileurls[5]; 7 var file = DriveApp.getFileById(fileid); 8 files.push(file); 9} 10if(MailList[i][8]) { 11 //プログラム6-2 添付ファイル2 12 var fileurl2 = MailList[i][8];//添付ファイルURL2 13 var fileurls = fileurl2.split('/'); 14 var fileid = fileurls[5]; 15 var file2 = DriveApp.getFileById(fileid); 16 files.push(file); 17} 18if(MailList[i][9]) { 19 //プログラム6-3 添付ファイル3 20 var fileurl3 = MailList[i][9];//添付ファイルURL3 21 var fileurls = fileurl3.split('/'); 22 var fileid = fileurls[5]; 23 var file3 = DriveApp.getFileById(fileid); 24 files.push(file); 25} 26 //プログラム7|メール下書き 27 GmailApp.createDraft(mailaddress,title,body,{attachments:files});

投稿2021/02/05 07:56

編集2021/02/06 01:21
papinianus

総合スコア12705

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

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

K-SK

2021/02/05 08:53

スプレッドシートの説明が悪く申し訳ございません。 1社目は、 B2セルに会社名・C2に担当者名・D2セルにメールアドレス・G2セルにメール本文・H2セルに添付ファイル1のドライブURL・I2セルに添付ファイル2のドライブURL・J2セルに添付ファイル3のドライブURLとなっております。 2社目は、 B3セルに会社名・C3に担当者名・D3セルにメールアドレス・G3セルにメール本文・H3セルに添付ファイル1のドライブURL・I3セルに添付ファイル2のドライブURL・J3セルに添付ファイル3のドライブURLとなっております。 3社目以降は行の数値が変わる形で続いていきます。
papinianus

2021/02/06 01:23

実際のデータサンプルをご提示ください、というべきでした。 想像で書き換えました。もともとこれを書いた人に再依頼してください。
K-SK

2021/02/08 09:02

ありがとうございます。 記載頂いた内容を実際の内容に合わせて書き換えまして無事に出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問