URLをコピーしました!
スキルアップを始める!

【GAS】1行目のセルにチェックが入ったら行のデータをGmailで自動メール送信するスクリプト(Part1)

GAS(GoogleAppsScript)
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

1行目にチェックが入った場合にメール送信

Google Apps Scriptを使用して、Google Sheetsの特定の範囲で1行目にチェックが入った場合に、その行のデータを自動的にメールで送信するスクリプトです。

チェックが入ったタイミングで、メール送信させてみます。

onCheck

まずは、現在のシート名が目的のシートと一致した場合、スクリプトが動くような関数を作ります。

function onCheck(e) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = "リスト";
  const activeSheetName = e.source.getActiveSheet().getName();
  console.log('activeSheetName:' + activeSheetName);
  if (activeSheetName == targetSheet) {
    console.log("OK");
  }
}

これで、現在のシートが目的のシートと一致したかどうか分かります。

トリガーを追加します。

現在のシート名が取得できました!

1行目かどうかを調べる

次に、1行目かどうかを調べます。e.rangeで編集中のセルを取得して、getColumn()で列番号を取得します。

function onColNumber(e){
  const cell = e.range;
  const column = cell.getColumn();
  if(column === 1 && !cell.isBlank()){
   console.log('1行目です');
  }
}

あとは、先ほどのif文の中で関数を実行します。

function onCheck(e) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = "リスト";
  const activeSheetName = e.source.getActiveSheet().getName();
  console.log('activeSheetName:' + activeSheetName);
  if (activeSheetName == targetSheet) {
    onColNumber(e);
  }
}

function onColNumber(e){
  const cell = e.range;
  const column = cell.getColumn();
  if(column === 1 && !cell.isBlank()){
   console.log('1行目です');
  }
}

取得できました!

メールを送信する

あとは、メールを送信します。

function sendMail(e) {
  const mailFrom = "XXXX@gmail.com";
  const mailTo = "XXXX@gmail.com";
  let subject = "件名です";
  let body = "本文テスト\n"
    + "送信します。\n";

  GmailApp.sendEmail(mailTo, subject, body, {
    from: mailFrom
  }
  );
}

このような感じで、メールが送信される関数を作っておき、前項の条件分で実行させます。

function onColNumber(e) {
  const cell = e.range;
  const column = cell.getColumn();

  if (column === 1 && !cell.isBlank()) {
    sendToMail(e);
  }
}

function sendToMail(e) {
  const mailFrom = "XXXX@gmail.com";
  const mailTo = "XXXX@gmail.com";
  let subject = "件名です";
  let body = "本文テスト\n"
    + "送信します。\n";

  GmailApp.sendEmail(mailTo, subject, body, {
    from: mailFrom
  }
  );
}

権限を与える必要があるので、一度スクリプトを実行しておきます。

メールが送信されました!

組み合わせる

あとは、これらをすべて組み合わせます。

[rml_read_more]

function onCheck(e) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = "リスト";
  const activeSheetName = e.source.getActiveSheet().getName();
  console.log('activeSheetName:' + activeSheetName);
  if (activeSheetName == targetSheet) {
    onColNumber(e);
  }
}

function onColNumber(e) {
  const cell = e.range;
  const column = cell.getColumn();

  if (column === 1 && !cell.isBlank()) {
    sendToMail(e);
  }
}

function sendToMail(e) {
  const mailFrom = "eguweb.jp@gmail.com";
  const mailTo = "from.eguchi@gmail.com";
  let subject = "件名です";
  let body = "本文テスト\n"
    + "送信します。\n";

  GmailApp.sendEmail(mailTo, subject, body, {
    from: mailFrom
  }
  );
}

チェックを入れてみます。

メールが送信されました!

まとめ

これで、Google Apps Scriptを使用して、Google Sheetsの特定の範囲で1行目にチェックが入った場合に、その行のデータを自動的にメールで送信するスクリプトができました。

次は、内容を作っていきます。

つづく。

Kindle Unlimited 会員は無料で購読できます
購読はこちら
Kindle Unlimited 会員は無料で購読できます
購読はこちら