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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

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

Q&A

解決済

1回答

791閲覧

【GAS】「対応完了」以外の案件を、担当者へ一括メール送付する方法について

mitsuba

総合スコア20

Google Apps Script

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

0グッド

0クリップ

投稿2019/08/20 08:51

イメージ説明

≪実現したい内容≫
①J列が「対応完了」以外の場合、S列の担当者へ担当タスクを集約して、1通のメールを送付
②メール本文に、C列とH列の内容を挿入

≪メールイメージ≫===============
【To】aaa@●●●.co.jp
【本文】
◯◯さん

  管理表のタスクをお知らせいたします。
ご対応を、お願いいたします。

   件名    ID
テスト①  12345
テスト②  54321

ご対応、よろしくお願いします。
=========================

途中までスクリプトを作成してみたのですが、実現したい内容の①②について、
解決する事ができません。
※「if文」は、別件のスクリプトを流用している為、修正が必要な事は理解しているのですが、
修正方法が分からず困っております。

function mail1(e) { //本日日付の取得 var nowDate = new Date(); //Fromメールアドレス var mailFrom = "ccc@●●●.co.jp"; //メールタイトルを記載してください。 var mailSubject = "【タスクのお知らせ】業務管理表"; var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("テスト"); var dr = ss.getDataRange(); var lr = dr.getLastRow(); var values = dr.getValues(); var bMailSend = false; //メール送信確認 for (var i = 1; i < lr; i++) {     // 対応完了以外抽出 var status = values[i][9] if(status < nowDate){ if(iTeishutsuFlg == "未"){ // 参加者名 var name = values[i][6]; // Toメールアドレス var mailTo = values[i][18]; // 件名 var title = values[i][2]; // ID    var id = values[i][7] //メール内容を記載 var mailBody = "お疲れ様です。\n"; mailBody = name + " さん\n\n" + mailBody + "\n"; mailBody = mailBody + "管理表のタスクをお知らせいたします。\n"; mailBody = mailBody + "ご対応を、お願いいたします。\n\n"; mailBody = mailBody +"◆件名\n"; mailBody = mailBody +   title + "\n\n"; mailBody = mailBody +"◆ID\n"; mailBody = mailBody +   id + "\n\n"; mailBody = mailBody + "ご対応、よろしくお願いします。\n\n";       MailApp.sendEmail(mailTo, mailSubject, mailBody); bMailSend = true; } } } }

対応方法をご存じの方がいらっしゃいましたら、アドバイスいただけます様、お願いします。
よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/08/20 16:03

1.7行目のFromメールアドレスとありますが、このコードを書いているアカウントとは別のアドレスから送信するのでしょうか。 2.17行目の「bMailSend」は何のためにあるのでしょうか。 3.26行目のnowDate = 本日の日付と、status = J列の文字を比較しているのでエラーが起きます。日付と比較する理由はありますか。 4.27行目の「iTeishutsuFlg」は定義されていないのでエラーが出ますが、これは使用するのでしょうか。 5.29行目の「name」は実現したい内容に含まれていませんが、これも必要ということで大丈夫ですか。
mitsuba

2019/08/21 00:45

hachi_さん、ご確認いただきまして、ありがとうございます。 別件で利用していたスクリプトを参考に作成していた為、不要なコードが多く、大変失礼いたしました。 ご質問いただきました件、以下に回答いたします。 1.自身のメールアドレスから返信したいと思っておりましたので、記載しておりました。 2~4.特に使用する予定はありません。 5.記する事を失念しておりましたが、G列の名前をメール本文へ代入したいと思っておりました。  そのため、メール内容(2行目)に「mailBody = name + " さん\n\n" + mailBody + "¥n";」を  記載しておりました。
guest

回答1

0

ベストアンサー

1に関しては少し難しいので、省略します。
下記のサイトを参考ください。
[Google Apps Script]別のアドレスからメールを送信する。

function test() { //シート内の全てのデータ const ss = SpreadsheetApp.getActiveSpreadsheet(); const sht = ss.getSheetByName("テスト"); const val = ss.getDataRange().getValues(); //1行目(見出し)と「対応完了」以外を抽出 const dtaArray = val.filter(function(e, i){ //i != 0を略している return i && e[9] != '対応完了'; }) //重複したメールアドレスを削除 const toArray = dtaArray.map(function(e){ return e[18]; }).filter(function(e, i, a){ return a.indexOf(e) == i; }) //件名 const sbj = 'タスクのお知らせ】業務管理表'; //同じメールアドレスを同時に処理 toArray.forEach(function(to){ //メールアドレスでデータを検索 var dta = dtaArray.filter(function(e){ return e[18] == to; }) //担当者名 var name = dta[0][6]; //件名とid(複数対応) var ttlid = dta.map(function(e){ return e[2] + '  ' + e[7]; }).join('\n'); //本文 var body = name + ' さん\n\n' + 'お疲れ様です。\n' + '管理表のタスクをお知らせいたします。\n' + 'ご対応を、お願いいたします。\n\n' + '件名    ID\n' + ttlid + '\n\n' + 'ご対応、よろしくお願いします。'; //メール送信 //MailApp.sendEmail(to, sbj, body); //確認用本文(確認後、上の行の先頭の//を消すと動きます) Logger.log(body); }) }

投稿2019/08/21 00:55

編集2019/08/21 01:36
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mitsuba

2019/08/22 02:06

hachi_さん、無事に実装できました。 別のアドレスからメール送信する際についても、既にGメールの設定画面で登録しているアドレスでしたので、対応する事ができました。 ご教示いただき、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問