4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Apps Scripts × Slack × Gmail メッセージの自動送信

Last updated at Posted at 2019-01-29

##moment.jsが便利なので、入れます。
リソース→ライブラリ
ライブラリを追加:MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48
バージョンは、9を選択して、保存。
スクリーンショット 2019-01-29 11.06.58.png

##今日やる内容(自分のGASにコピペしてください。)

mail.js
var DEBUG_FLG = 0; // 0のときメール送信

function sendEmail(){
  var tomail    = "";
  var mailTitle = "";
  var mailMsg   = "";
  var opt       = new Object();

  opt.cc   = "";
  opt.bcc  = "";
  // opt.from = "g181tg2061@dhw.ac.jp";
  opt.name = "【メルマガ】"; // 差出人

  // スプレットシートからデータを引き出す
  // 1. 今開いている(紐付いている)スプレッドシートを定義
  var magaginSheet  = SpreadsheetApp.getActiveSpreadsheet();
  // 2. mail_listの名前が書かれているシートを呼び出す
  var maillistSheet = magaginSheet.getSheetByName("mail_list");
  // 3. 最終列の列番号を取得
  var numColumn     = maillistSheet.getLastColumn();
  // 4. 最終行の行番号を取得
  var numRow        = maillistSheet.getLastRow()-2;
  Logger.log(numRow); // コントロール(macはコマンド) + R して、上のバーの表示→ログが見れる。
  // 5. 範囲を指定(上、左、右、下)
  var dataRange     = maillistSheet.getRange(3, 1, numRow, numColumn);
  // 6. 値を取得
  var data          = dataRange.getValues();

  for(i in data){
    var rowData    = data[i];
    var organization = data[i][0];  // 法人名
    var mainAddress  = data[i][1];  // 事務所(主)
    var subAddress   = data[i][2];  // 事務所(従)
    var ceoName      = rowData[3];  // 代表者氏名
    var contactDay   = Moment.moment(rowData[4]).format('YYYY/MM/DD'); // コンタクト日
    var sendMailDay  = Moment.moment(rowData[5]).format('YYYY/MM/DD'); // 次回メール送信日
    var field        = rowData[6];  // 活動分野、メモ
    var callMeMaybe  = rowData[7];  // 電話番号
    var emailAddress = rowData[8];  // メールアドレス
    var partnerName  = rowData[9];  // 担当者氏名
    var contactForm  = rowData[10]; // 連絡フォーム
    var sentTimes    = rowData[11]; // 送信回数
    var sentProval   = rowData[12]; // 自動送信許可
    var sentTime     = Moment.moment().format('YYYY/MM/DD'); // 送信時間
    var trackingID   = rowData[14]; // トラッキングID

    var format = "いつもありがとうございます!<br>今後とも何卒よろしくお願いいたします。";

    mailTitle    = "【新年のご挨拶】こんばんは"; // メールの件名
    mailMsg      = "<b>今年はプログラミングをはじめました。</b>"; // メールの本文
    opt.htmlBody = mailMsg; // optに本文を格納
    if(0 == DEBUG_FLG && "許可" == sentProval && sendMailDay == sentTime){
      // メールを送信
      // 参考URL: https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)
      MailApp.sendEmail("nj.takayuki@gmail.com", mailTitle, "", opt); // (宛先, 件名, 本文, オプション)

      // slackにメッセージ送信
      var slack_url = "https://hooks.slack.com/services/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";
      //var slack_url = "https://hooks.slack.com/services/**********************************************"; // ******の部分に自分のKEYを入力
      var slack_opt = {
        "method" : "POST",
        "headers": {"Content-type": "application/json"},
        "payload" : '{"text":"' 
        + "自動メールを"+partnerName+"送りました。"
        + '"}'
      };
      UrlFetchApp.fetch(slack_url, slack_opt);

      // 送信回数と送信時間の更新
      rowData[11] = sentTimes + 1;
      rowData[13] = sentTime;
    } else {
      Logger.log(emailAddress);
      Logger.log(mailTitle);
      Logger.log(opt);
    }
  }
  // スプレッドシートのデータを更新(送信回数と送信時間)
  dataRange.setValues(data);
}

##スプレッドシートの中身
スクリーンショット 2019-01-29 13.35.24.png

トリガー設定

スクリーンショット 2019-01-29 12.07.02.png スクリーンショット 2019-01-29 11.45.24.png ### イベントのソースを選択:時間主導型 ### 時間ベースのトリガーのタイプを選択:日付ベースのタイマー ### 時刻を選択:好きな時間を選択 スクリーンショット 2019-01-29 11.47.24.png

以上です。来週(2/5)もデジハリ4Fで会いましょう!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?