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

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

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

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

メール

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

Q&A

解決済

2回答

943閲覧

GAS Spreadsheetから自動でメールを送信

kimitama

総合スコア13

Google Apps Script

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

メール

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

0グッド

0クリップ

投稿2019/03/12 09:12

前提・実現したいこと

セルのプルダウン選択により、送信先・送信内容を変えたいです。

セルで「アルバイト用」を選択する
処理1:「お仕事開始について」というメールを個人のメールアドレスに送信
処理2:さらに「オリエンテーションのお願い」メールを会社発行のアドレスに送信

セルで「正社員用」を選択する
処理1:「お仕事開始について」というメールを個人のメールアドレスに送信
処理2:さらに「オリエンテーションのお願い」メールを会社発行のアドレスに送信

実際のセルの選択肢は3つです。
メールのタイトルは2種類、メール内容は6種類となります。 

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

エラーは出ていません。

該当のソースコード

function SendEmail(){ // 関数名 適当

// シートを名前で指定
var ss = SpreadsheetApp.getActive().getSheetByName('■■■');

 // タイトル
var MailTitle1 = "お仕事開始について"
var MailTitle2 = "オリエンテーションのお願い"

var lastRow = ss.getLastRow();

//
for(var i=3; i<=lastRow; i++){
if (ss.getRange(i,18).getValue() == "アルバイト用" && ss.getRange(i,19).getValue() !== "送信済"){

var rangeB = ss.getRange("B" + i).getValue();// 氏名 var rangeG = ss.getRange("G" + i).getValue();// 個人アドレス var rangeH = ss.getRange("H" + i).getValue();// 会社アドレス var rangeJ = ss.getRange("J" + i).getValue();// 担当者

  ・


var rangeN = Utilities.formatDate(rangeN, "JST", "YYYY'/'M'/'d'/'"); //日付表示

//アルバイト用「お仕事開始について」
var MailText1 = メール本文をココに";

GmailApp.sendEmail(rangeG, MailTitle1, MailText1, { from: '■■■@gmail.com', // GmailAppのoption 送信元アドレス変更可能(例えば、グループアドレスにできたりする) name: '■■■' // 受け取り側の表示名を指定 });

}
}
}

試したこと

現状のスクリプトで
アルバイト用を選択したらアルバイト用「お仕事開始について」
のメールを自動送信するところまではなんとか出来ました。

ですが、以下の部分でどうしても躓いてしまいます。
・プルダウンの選択をした際に2通の異なるメールを異なるアドレスにそれぞれ送る
・3つの異なる選択肢(プルダウンの選択)でそれぞれ実行させる

スクリプトについて全くの素人の為数々のサイトを参考に色々試してみたのですが
元のスクリプトまで動かなくなってしまったりと、うまくいきませんでした。

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

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

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

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

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

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

guest

回答2

0

解決しているので、将来の訪問者の方へ

都度送信すると、自動送信メール件数・スクリプトの実行時間制限にかかる可能性があります。

設計方針として、

  • メールを主眼におく

AからFのメールは、誰から、誰に送るのか、変動するのは何かを明確にする(Fromの会社が行に書いてあるのは要件からみても変。送信元会社が違うレベルだと個人情報保護の観点からも別のスプレッドシートに作るべき)

  • APIアクセスを減らす

メール宛先はBCC.を使う
(同じユーザが短時間に複数宛先にメールを送信するのは動きだけ見ればスパム的。Gmailからの送信だからあまり迷惑メールになりにくいのかもしれないが、可能な限りさけるべき)
データは一回で取る

を意識して設計したほうがいい。

投稿2019/03/13 01:29

papinianus

総合スコア12705

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

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

0

ベストアンサー

作成されたスクリプトの延長で考えるなら、if文の最初の{}を閉じた後ろにelse{}でカッコの中に、「ss.getRange(i,18).getValue() == "アルバイト用" && ss.getRange(i,19).getValue() !== "送信済"」が否の場合の処理を記入することで、別の処理が作れます。その中で更にif文を同様に作成すればまた別条件の分岐も作ることができます。
ただ、拝見するに条件分岐ががややこしそうなので、switchを使ったほうがわかりやすく処理を分岐させられると思います。
switchの使い方についてはリンク先を参考にしてみてください。
https://excel-ubara.com/apps_script1/GAS011.html

投稿2019/03/12 10:06

hiroshi0240

総合スコア640

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問