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行目にチェックが入った場合に、その行のデータを自動的にメールで送信するスクリプトができました。
次は、内容を作っていきます。
つづく。