【Gmail】宛先ごとに内容が異なるメールを一斉送信する方法(差し込みメール)

こんにちは。ichi3270です。

大勢に対して、微妙に内容が違うメールを一斉送信したいことってありますよね。

たとえば、一行目に ●●様 って入れたり。

もしくは、あなたのIDは●●です って入れたり。

自分も上記のような用途でメール一斉送信をする機会があったので、ツールを作ってみました。プログラミング未経験の人でもコピペでできるように説明しますので、参考になると幸いです。

*この記事を参考に作成されたツールによって問題が起きた場合でも、責任は負いかねます。メールのテスト送信などを行った上で、自己責任のもとご利用ください。

できあがるもの

Google スプレッドシートで作られた画面に、メールの内容を入力して、ボタンを押すと、メールが送信されるようにします。
利用者(メールを送る人)はGoogleアカウントを持っている必要があるので注意してください。

メールの内容を作ってSendMailボタンを押すと・・・
メールが一斉送信される。内容の一部は受信者ごとに変えることができる。

さっそく作っていこう

1.スプレッドシートを新規作成する

アプリボタン→ドライブの順にクリック
+新規 ボタン → Google スプレッドシート → 空白のスプレッドシート の順にクリック

2.スプレッドシートで入力画面を作る

Googleスプレッドシートの操作は直感的かつExcelと似ているので、説明は省略します。この画像のようなフォームを作ってみてください。

* 一言一句同じにする必要はありませんが、シート名行番号と列番号は必ず同じにしてください

main シート

シートの名前は main にしましょう

【項目リスト(上から順)】

  • あなた(発信者)のメールアドレス
  • あなた(発信者)の名前
  • メールタイトル(差込可能)
  • 本文(差込可能)
  • 添付ファイル

sashikomi シート

こちらは sashikomi というシート名にする

【項目リスト(左から順)】

  • 宛先メールアドレス
  • CCアドレス
  • BCCアドレス
  • 差込 $1
  • 差込 $2
  • 差込 $3
  • 差込 $4
  • 差込 $5

3.スクリプトを貼り付ける

「スクリプトエディタ」を起動して、スクリプトを作成します。

スクリプトの作成は、プログラミングの知識が必要なのですが、今回は私が用意したスクリプトをコピペでOKです。

ツール → スクリプトエディタ の順にクリック
赤枠で囲った部分(デフォルトのコード)を削除します
コードをまるごと貼り付けます

貼り付けるコードは以下のとおりです。
*2020.3.21 添付ファイル無しの場合にエラーにならないよう修正しました

function pushSendButton() {
    /* スプレッドシートのシートを取得と準備 */
    var ss = SpreadsheetApp.getActiveSpreadsheet();     //このスプレッドシート
    var mainSheet = ss.getSheetByName("main");          //メインシート
    var skSheet = ss.getSheetByName("sashikomi");       //差込シート
    var skEndRow = skSheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
    var count = skEndRow - 1;
    // 送信確認
    var select = Browser.msgBox("メールを一括送信します!", count + "件のメールを送信しますが、よろしいですか?", Browser.Buttons.OK_CANCEL);
    if (select == 'ok') {
        sendEmail();
    }
    if (select == 'cancel') {
        Browser.msgBox("送信をキャンセルしました");
    }
}

function sendEmail() {
    /* スプレッドシートのシートを取得と準備 */
    var ss = SpreadsheetApp.getActiveSpreadsheet();          // このファイル
    var mainSheet = ss.getSheetByName("main");               // メインシート
    var skSheet = ss.getSheetByName("sashikomi");            // 差込シート
    var skEndRow = skSheet.getDataRange().getLastRow();      // シートの使用範囲のうち最終行を取得
    var attachedFileId = mainSheet.getRange(7, 2).getValue(); // 添付ファイルのID

    /* メール基本データの設定 */
    var strFrom = mainSheet.getRange(3, 2).getValue();        // fromメールアドレス
    var strSender = mainSheet.getRange(4, 2).getValue();      // 差出人の名前
    var strSubject = mainSheet.getRange(5, 2).getValue();     // メールタイトル
    var strBody = mainSheet.getRange(6, 2).getValue();        // 本文
    if (attachedFileId) {
        var attachedFile = DriveApp.getFileById(attachedFileId); // 添付ファイル
    }

    var strSubjectIns = "";   // 差込後のメールタイトル
    var strBodyIns = "";      // 差込後のメール本文

    for (var i = 2; i <= skEndRow; i++) {
        // 差込シートの取得
        var strToEmail = skSheet.getRange(i, 1).getValue(); // 送信先メール
        var strCc = skSheet.getRange(i, 2).getValue();      // CC
        var strBcc = skSheet.getRange(i, 3).getValue();     // BCC
        var sk1 = skSheet.getRange(i, 4).getValue();        // 差込①
        var sk2 = skSheet.getRange(i, 5).getValue();        // 差込②
        var sk3 = skSheet.getRange(i, 6).getValue();        // 差込③
        var sk4 = skSheet.getRange(i, 7).getValue();        // 差込④
        var sk5 = skSheet.getRange(i, 8).getValue();        // 差込⑤

        // 差込を反映
        strSubjectIns = strSubject.replace(/\$1/g, sk1).replace(/\$2/g, sk2).replace(/\$3/g, sk3).replace(/\$4/g, sk4).replace(/\$5/g, sk5); //タイトル
        strBodyIns = strBody.replace(/\$1/g, sk1).replace(/\$2/g, sk2).replace(/\$3/g, sk3).replace(/\$4/g, sk4).replace(/\$5/g, sk5);       //本文

        /* メール送信 */
        if (attachedFileId) {
            // 添付ファイル有りの場合
            GmailApp.sendEmail(
                strToEmail,    //toアドレス
                strSubjectIns, //メールタイトル
                strBodyIns,    //本文
                {
                    cc: strCc,                //ccアドレス
                    bcc: strBcc,              //bccアドレス
                    from: strFrom,            //fromアドレス
                    name: strSender,          //差出人
                    attachments: attachedFile //添付ファイル
                }
            );
        } else {
            // 添付ファイル無しの場合
            GmailApp.sendEmail(
                strToEmail,    //toアドレス
                strSubjectIns, //メールタイトル
                strBodyIns,    //本文
                {
                    cc: strCc,               //ccアドレス
                    bcc: strBcc,             //bccアドレス
                    from: strFrom,           //fromアドレス
                    name: strSender,         //差出人
                }
            );
        }
    }
    Browser.msgBox("送信が完了しました。");
}

コードを貼り付けたら、保存ボタンを押して、スクリプトエディタを閉じます。

4.ボタンを作る

「挿入」→「図形描画」で図形作成画面が開きます。

直感的にボタンが作成できると思いますので、好きなようにデザインしてください。

ボタンが作れたら、右上の「保存して終了」を押します。

挿入 → 図形描画をクリックし、図形を作成する

ボタンを挿入したら、ボタンにスクリプトを割り当てます。

ボタン右上のメニュー → スクリプトを割り当て
pushSendButton を入力し、OK

これで、ボタンをクリックすると、メール一括送信スクリプトが起動するようになりました。

5.テストしてみよう

ここまでの工程で、ツールは完成しているので、送信テストをしてみます。

◇ sashikomi シートに宛先や差し込み文言を入力

受け取る人によって文言を変えたい場合は、その文言を差込 $1 ~ $5に入力します。

sashikomi シートはこんな感じで入力しました

◇ main シートにあなたのメールアドレスや、メールの内容を入力

差込部分(受信者によって内容が異なる部分)は $1 や $2 等と入力します。

今回の例だと、sashikomiシートの差込 $1受信者名が入っているので、メール本文の1行目は 「$1 さん」としています。こうすることで、1人目の受信者には「ジョン さん」、2人目の受信者には「キャシー さん」が表示されます。

main シートはこんな感じに入力。

ちなみに、ファイルを添付したい場合は、以下の手順を実施します。

  • Googleドライブにファイルをアップロード
  • 右クリックメニューの「共有可能なリンクを取得」をクリック
  • このツールの「添付ファイル」欄に貼り付け
  • 先頭の https://drive.google.com/open?id= を取り除く

ファイルを添付しない場合は、「添付ファイル」欄は空白にします。

Send Mail !! ボタンを押すと、スクリプト実行の承認ダイアログが出るので「続行」をクリックします。

初めて使う時はこのダイアログがでます。「続行」クリック

*この後、Googleのログイン画面等が出ますので、ログインし、許可を押してください。なお、この承認作業は初めてこのツールを使う時のみ必要となります。(2回目以降は不要となります)

許可の作業が終わったら、送信確認メッセージが表示されますので、「OK」をクリック。

送信確認メッセージが表示される。OKを押下すると、メールが送信される。

以上で、メールが一斉送信されました。

受信者側のメール受信トレイで確認してみると、ちゃんと受信できていて、差込も反映されていることが確認できました。

送信した2つのメールを確認。黄色マーカー部分が、宛先ごとにちゃんと差し込まれている。

ちなみに、送信者の送信トレイにも、送ったメールが残っています。

送信トレイに残っているので確認できる

おわりに

今回の記事はいかがでしたか?

GoogleスプレッドシートやGmail等のGoogleサービスは、インターフェースも使いやすく、通常の使用方法でも十分便利なのですが、今回のようにスクリプトを使うと、より便利になります。

私も勉強中の身ですが、また便利なものを見つけたら紹介したいと思います。

コメント

  1. 宮口 より:

    テスト送信をしましたところ、エラーがでてしまいます。
    是非ご教授いただきたいのですが、このエラーはなぜ出るのでしょうか?

    Exception: GmailApp オブジェクトでの sendEmail メソッドまたはプロパティの取得中に予期しないエラーが発生しました。詳細

    というものになります。

    • ichi3270 ichitamu より:

      コメントありがとうございます。
      そして、まったくコメントを確認しておらず、返信ができず申し訳ありません。
      本件、私も調べてみようと思いますので、わかりましたら返信させていただきます。
      (原因が究明できなかったら申し訳ありません・・・)

  2. 初心者 より:

    勉強させていただいてます。
    同じものを作ったのですが、「Exception: GmailApp オブジェクトでの sendEmail メソッドまたはプロパティの取得中に予期しないエラーが発生しました。」と出てきて送信できませんでした。

    なぜでしょう。。添付ファイルは無し、差し込みは$3まで使用しています。不要な部分を削除してもダメでした。。

    • ichi3270 ichitamu より:

      コメントありがとうございます。
      そして、まったくコメントを確認しておらず、返信ができず申し訳ありません。
      本件、私も調べてみようと思いますので、わかりましたら返信させていただきます。
      (原因が究明できなかったら申し訳ありません・・・)

  3. ichi3270 ichitamu より:

    宮口さん、初心者さん

    この度はコメントありがとうございました。
    確かに、ご指摘のエラーが発生しましたので、ソースを修正させていただきました。

    原因は、添付ファイルを指定していない場合でも、attachments: attachedFileを引数に指定していたのが問題だったようです。
    安直な修正ではありますが、添付ファイルを指定していない場合と、指定した場合で処理を分けて対応いたしました。

  4. 初心者2 より:

    お世話になります。
    スクリプトの送信ボタンまで作成完了し、ボタンを押そうとした段階で下記のようなメッセージが表示され、送信することができませんでした。
    【このアプリは、Google による確認が済んでいません。よく知っている信頼できるデベロッパーの場合に限り続行してください。】
    上記への対応策をご教授いただけますと幸いです。
    よろしくお願い致します。

  5. 735 より:

    大変便利に使わせていただきました。
    おかげさまで何時間分か得した気分です。
    どうもありがとうございました。
    自分でもこういうのが書けるように勉強したいと思います。

    • ichi3270 ichitamu より:

      コメントありがとうございます!
      お役に立てたようでとても良かったです。
      僕レベルでよろしければ、割とすぐに到達できると思いますので、是非チャレンジしてみてください。

    • マーガリン より:

      お世話になります。
      とても、探していたものを発見できてこれからの業務が非常に効率的に進められそうで、大変感謝しております。
      1点ご質問ですが、ccを複数名(5名ほど)入れたく、(,)でくぎってshashikomiのシートのccアドレス枠に入れたのですが、無効なアドレスとしてエラーになってしまいました。
      どのように解消したら良いでしょうか?
      お手数お掛け致しますが、ご教示いただければ幸いでございます。

      • ichi3270 ichi3270 より:

        コメントありがとうございます。
        先ほど、cc5名を入れて試してみたのですが、私の場合は成功してしまいました・・・。
        試しに、全角の「、」で区切ってみたら、
        Exception: 無効なメール: aaa@gmail.com、bbb.phone@gmail.com というエラーが確認できました。

        アドレスの区切りのカンマが 全角の「、」になっていたりしないでしょうか。半角の「,」で区切って下記のように入力する必要があります。

        例: aaa@gmail.com,bbb@gmail.com,ccc@gmail.com,ddd@gmail.com,eee@gmail.com

      • マーガリン より:

        早速のご回答誠にありがとうございました!
        半角カンマで試したところ、送信できました。
        お騒がせしてしまい申し訳ありませんでした。

        また、当ツールのご作成に重ねて感謝申し上げます。

  6. ジュン より:

    探してた物に出会えて感謝してます~。
    だいぶ効率化できました~。

    • ichi3270 ichi3270 より:

      ジュンさん お役に立てたようで良かったです!コメントありがとうございました!

  7. まーちゃん より:

    いつも便利に使用させて頂いております。
    今までPDFを送信する際にGoogleドライブでファイルの共有からリンクコピーして=前を消して送信してたのですが、
    システム?が変わったみたいなのですが何か対応策ございますでしょうか? 

    • ichi3270 ichi3270 より:

      コメントありがとうございます。
      確かに、すこしリンクの形式が変わっていますね!

      リンクをコピーすると、下記のような感じになっていると思います。
      https://drive.google.com/file/d/1lIXY2o3HXYsg3uI0xdym6xXv686XYZ6X/view?usp=sharing
      赤色にした部分を添付ファイル欄に入力すればうまくいくと思います!

  8. さとし より:

    GAS初心者で恐縮なのですが,添付ファイルのIDを差し込みシートから取得することは可能なのでしょうか。
    仮に,sashikomiシートに$6を作成して,$6のフィールドにファイルIDを入力し,mainシートでは,$6を参照するようなことです。それぞれに異なる添付をつけられればかなりできることが増えるのですが,参照させようとしても,どこかの作りが間違っており,[Exception: DriveApp オブジェクトでの getFileById メソッドまたはプロパティの取得中に予期しないエラーが発生しました。]となってしまうのです…。

    • ichi3270 ichi3270 より:

      sashikomiシートに$6を作成する方法でしたら、コードを下記のように修正したら、うまくいったようです

      
          /* スプレッドシートのシートを取得と準備 の一番最後は削除し、2行追加する */
          //var attachedFileId = mainSheet.getRange(7, 2).getValue(); // 添付ファイルのID
          var attachedFileId = ""; // 添付ファイルのID
          var attachedFile = ""; // 添付ファイル
      
      
          /* メール基本データの設定 の一番最後3行は削除*/
          // if (attachedFileId) {
          //     var attachedFile = DriveApp.getFileById(attachedFileId); // 添付ファイル
          // }
      
      
          // 差込を反映 の直前に追加
              var attachedFileId = skSheet.getRange(i, 8).getValue(); // 添付ファイルのID
              if (attachedFileId) {
                  var attachedFile = DriveApp.getFileById(attachedFileId); // 添付ファイル
              }
      
      • さとし より:

        早速ありがとうございます…!
        すごいです…できることが思いっきり増えました!

        「// 差込を反映の直前」に追加する1行目は(i,9)にしました。一応$5を生かしていたので…。

        // 差込を反映 の直前に追加
        var attachedFileId = skSheet.getRange(i, 8).getValue(); // 添付ファイルのID
        if (attachedFileId) {
        var attachedFile = DriveApp.getFileById(attachedFileId); // 添付ファイル
        }

        割と大事な個別PDF付きのメールを文面変えつつ50名近くに送らなければならなかったので,死ぬ思いをするところでした。
        初心者なりにスクリプトとにらめっこしながら調べていましたら,少しずつ理解できるようになってきたので,調子に乗って頑張って勉強しようと思います。
        (ファイルid一覧自動取得とか頑張って作ってみようと思った矢先に,検索したら完成形が見つかっちゃいましたが,せめてまずはコメントなしでもある程度解読できるようになって,近いうちに簡単な奴でも一式組めるようになりたいです。)

        本当に,ありがとうございます…!!

  9. のぶた より:

    求めているもの出会えて,感謝しています.

    ところで,作成したスプレッドシートを部内で共有できますか?
    方法としては,
    1 グーグルドライブの共有ドライブで各自にスプレッドシートをコピーしてもらう.
    2 作成したスプレッドシートをテンプレートとして登録する.

    このような方法が可能でしょうか?

    • ichi3270 ichi3270 より:

      コメントありがとうございます。
      ご質問の返事になっているかどうかわからないのですが、部署内などで共有は可能だと思います。

      1 グーグルドライブの共有ドライブで各自にスプレッドシートをコピーしてもらう.

      これが最も簡単でしょうね。私もそうすると思います。

      2 作成したスプレッドシートをテンプレートとして登録する.

      すみません、こちらは私の知識不足で、どういうものなのかがわかりませんでした;

  10. たたたた より:

    非常に便利で素敵なサイトに巡り会えました!
    本当にありがとうございます。

    一点ご教示いただきたいのですが、

    複数のファイルを添付したい場合はどのようにしたら良いのでしょうか。
    ( , )で区切るのかなと思ったらエラーになってしまい。。

    よろしくお願いします。

    • ichi3270 ichi3270 より:

      コメントいただきありがとうございます。
      現状のコードでは申し訳ありませんが複数のファイル添付に対応していません・・・ので、zipファイル等で送って頂くか、
      プログラミングのご経験があるようでしたら、スクリプトを修正いただくかになります。

      (もしプログラミング経験がお有りでしたら)GmailApp.sendEmailの中で設定している attachments: に、配列を入れるよう修正してあげればOKなようです。

      • たたたた より:

        早速にありがとうございます。

        初心者なりに勉強して試してみます。
        スクリプト壊してしまったら、またこちらへコピーしに戻って参ります。

        本当にありがとうございました。

        • さとし より:

          以前ichi3270様に,「人別に異なるファイルを送りたい」ということで,やりかたを教えていただいたさとしです。
          2か月くらい前に,たたたた様と同じ問題に直面したため,
          本文差し込みは$1~$5まで,添付の差し込みは4つまでにして,頑張って付け加えてみました。(なので,I列~L列が添付IDを記入するフィールドです)
          とても助けていただいたページなので,できる限りの恩返しとして,長くなりますがコメントさせてください。

          プログラミング初心者なので,無駄のあるコードだとは思いますが,望んだ結果になることは確認済みです。※配列内にnull?があった場合にエラーが出ないように,Booleanを用いましたが今一つ正しく理解できていないので,どなたか,無駄を省いたりその箇所をご教示いただけますと恐悦至極です…。

          以下コード全文です—-
          function pushSendButton() {
          /* スプレッドシートのシートを取得と準備 */
          var ss = SpreadsheetApp.getActiveSpreadsheet(); //このスプレッドシート
          var mainSheet = ss.getSheetByName(“main”); //メインシート
          var skSheet = ss.getSheetByName(“sashikomi”); //差込シート
          var skEndRow = skSheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
          var count = skEndRow – 1;
          // 送信確認
          var select = Browser.msgBox(“メールを一括送信します!”, count + “件のメールを送信しますが、よろしいですか?”, Browser.Buttons.OK_CANCEL);
          if (select == ‘ok’) {
          sendEmail();
          }
          if (select == ‘cancel’) {
          Browser.msgBox(“送信をキャンセルしました”);
          }
          }

          function sendEmail() {
          /* スプレッドシートのシートを取得と準備 */
          var ss = SpreadsheetApp.getActiveSpreadsheet(); // このファイル
          var mainSheet = ss.getSheetByName(“main”); // メインシート
          var skSheet = ss.getSheetByName(“sashikomi”); // 差込シート
          var skEndRow = skSheet.getDataRange().getLastRow(); // シートの使用範囲のうち最終行を取得

          /* メール基本データの設定 */
          var strFrom = mainSheet.getRange(3, 2).getValue(); // fromメールアドレス
          var strSender = mainSheet.getRange(4, 2).getValue(); // 差出人の名前
          var strSubject = mainSheet.getRange(5, 2).getValue(); // メールタイトル
          var strBody = mainSheet.getRange(6, 2).getValue(); // 本文

          var strSubjectIns = “”; // 差込後のメールタイトル
          var strBodyIns = “”; // 差込後のメール本文

          for (var i = 2; i <= skEndRow; i++) {
          // 差込シートの取得
          var strToEmail = skSheet.getRange(i, 1).getValue(); // 送信先メール
          var strCc = skSheet.getRange(i, 2).getValue(); // CC
          var strBcc = skSheet.getRange(i, 3).getValue(); // BCC
          var sk1 = skSheet.getRange(i, 4).getValue(); // 差込①
          var sk2 = skSheet.getRange(i, 5).getValue(); // 差込②
          var sk3 = skSheet.getRange(i, 6).getValue(); // 差込③
          var sk4 = skSheet.getRange(i, 7).getValue(); // 差込④
          var sk5 = skSheet.getRange(i, 8).getValue(); // 差込⑤
          var aFId1 = skSheet.getRange(i, 9).getValue(); // 添付ファイル1のID(attachedFileId)
          var aFId2 = skSheet.getRange(i, 10).getValue(); // 添付ファイル2のID
          var aFId3 = skSheet.getRange(i, 11).getValue(); // 添付ファイル3のID
          var aFId4 = skSheet.getRange(i, 12).getValue(); // 添付ファイル4のID
          var attachedFileIds = []; // 添付ファイルIDの配列
          var attachedFiles = []; // 添付ファイルの配列

          attachedFileIds.push(aFId1,aFId2,aFId3,aFId4); //添付ファイルのID配列にID1~4を挿入
          //添付ファイルのID配列に挿入されているものがあるときtrueとして実行
          if (attachedFileIds.length) {
          function isTrue(value) { //function「isTrue」を定義。配列の要素をブーリアン型で戻す
          return Boolean(value);
          };
          var attachedFileIds2 = attachedFileIds.filter(isTrue); //配列のうちfalseとなる要素を削除
          var attachedFiles = attachedFileIds2.map(function(value){
          return DriveApp.getFileById(value); // 添付ファイルの配列を取得
          });
          }

          // 差込を反映
          strSubjectIns = strSubject.replace(/\$1/g, sk1).replace(/\$2/g, sk2).replace(/\$3/g, sk3).replace(/\$4/g, sk4).replace(/\$5/g, sk5); //タイトル
          strBodyIns = strBody.replace(/\$1/g, sk1).replace(/\$2/g, sk2).replace(/\$3/g, sk3).replace(/\$4/g, sk4).replace(/\$5/g, sk5); //本文

          /* メール送信 */
          if (attachedFiles.length) {
          // 添付ファイル有りの場合
          GmailApp.sendEmail(
          strToEmail, //toアドレス
          strSubjectIns, //メールタイトル
          strBodyIns, //本文
          {
          cc: strCc, //ccアドレス
          bcc: strBcc, //bccアドレス
          from: strFrom, //fromアドレス
          name: strSender, //差出人
          attachments: attachedFiles //添付ファイル
          }
          );
          } else {
          // 添付ファイル無しの場合
          GmailApp.sendEmail(
          strToEmail, //toアドレス
          strSubjectIns, //メールタイトル
          strBodyIns, //本文
          {
          cc: strCc, //ccアドレス
          bcc: strBcc, //bccアドレス
          from: strFrom, //fromアドレス
          name: strSender, //差出人
          }
          );
          }
          }
          Browser.msgBox("送信が完了しました。");
          }

  11. SWD より:

    素晴らしいです。

    とても役に立ちました。
    丁寧にわかりやすく掲載していただき、ありがとうございました。

    • ichi3270 ichi3270 より:

      感想いただきましてありがとうございます!
      今後もお役に立つ記事がかけるよう努力します!

  12. nimiri より:

    記事拝見させていただきました!
    一点GAS初心者で恐縮なのですが、
    送信リスト(今回でいうsashikomi)を送信時に選択できるようにしたいのですが、可能でしょうか?
    ECサイトメルマガに例えるなら、
    購入履歴がある人には「A」、ないけど登録いただいている人には「B」、全員に「C」を送るとして、
    「A」のメール文を作成→Aのリストに送信、「B」作成→B送信、AB両方送信・・・
    など、送信時にどのリストに送るか選べるスクリプトを書きたく思っております、、、

    ご教示いただけますと幸いです。
    宜しくお願いします。

    • ichi3270 ichi3270 より:

      返信が遅くなり申し訳ありません。
      試していないのでちゃんと動くかはわからないのですが、下記の感じでいかがでしょうか。
      (ご利用の際は、かならず動作確認をお願いいたします)

      <画面の変更>
      ・差込シートのI列を「リスト名」列とする ← ここに、A とか B 等のユーザーの区分を入れておく
      ・mainシートのB8セルに、送信対象のリスト名を入力する ← 送信する前に A や B を入力する。未入力の場合は全員に送信される

      <スクリプトの変更>
      // スプレッドシートのシートを取得と準備 の最後に下記のコードを追加

      var selectedType = mainSheet.getRange(8, 2).getValue(); // 添付ファイルのID
      

      // 差込シートの取得 の最終行に下記のコードを追加

      var userType = skSheet.getRange(i, 8).getValue();        // 受信者のタイプ
      

      // for (var i = 2; i <= skEndRow; i++) { の次に下記のコードを追加

      if ( !selectedType && userType !== selectedType ){ continue; }  // タイプを選択している かつ 選択タイプ以外の送信先の場合はスキップする
      
  13. 5098 より:

    いつも便利に使用させて頂いております。

    ご質問なのです。
    昨日まで利用可能だったのですが、本日使用したところ【Exception: サービスを使用できません: Gmail】というエラーが出てしまい、送信できません。
    24時間以上たってから使用しているので時間制限と件数制限が超えているわけではありません。
    システム的?Google的?に何か変更があったか分かりますでしょうか?
    ご教示いただけますと幸いです。
    宜しくお願いします。

    • ichi3270 ichi3270 より:

      8月20日にGoogleのサービスで障害が発生していたようです。もしかしたらその影響ではないでしょうか。
      今は復旧したようなので、再度お試しください~

  14. 高橋貴子 より:

    たかこ より
    まさかできるとは思わなかったのに、ほとんど1回でできました。
    pushSendButtonのつづりを1度間違えていました。コピーするべきでした。
    他のサイトでもやろうとしましたが、途中で諦めました。
    ここでの説明はわかりやすくて、説明通りに進んでいくと見事に大成功でした。

    今までは差し込み印刷を作って、1個ずつ貼り付けて送っていました。
    バカみたいでした。こんなに楽にできるとは信じられません。✰感激✰です。
    仕事で400人くらいに送ることもあります。
    いっぺんに送るのは、少し怖いような気もしますが、100人ずつでも4回で終わります。
    スプレッドシートを利用すると、すごく効率がよくなりますね。
    とっても嬉しいです。ありがとうございました。

    • ichi3270 ichi3270 より:

      コメントありがとうございました!
      400人に送るのは大変ですね・・・!この記事が役に立ったとのことで、嬉しいです。

  15. 高橋 より:

    たかこより

    こんにちは。
    別のメールドレスから同じようにやってみました。

    3.スクリプトを貼り付ける 
    ツール → スクリプトエディタ の順にクリック までやりました。

    この後
    現在、ファイルを開くことができません。アドレスを確認して、もう一度試してください。
    と出てきて、先に進めないのですが、どうしてでしょうか?

  16. りょう より:

    sashikomiのセルに日付を入れると、メール本文に、

    Fri Dec 11 2020 00:00:00 GMT+0900 (日本標準時)のように表示されます。

    これを回避することはできますか?

タイトルとURLをコピーしました