1行目にチェックが入った場合にメール送信
Google Apps Scriptを使用して、Google Sheetsの特定の範囲で1行目にチェックが入った場合に、その行のデータを自動的にメールで送信するスクリプトです。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190039-00.jpg?resize=1024%2C513)
チェックが入ったタイミングで、メール送信させてみます。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190040-00.jpg?resize=1024%2C218)
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");
}
}
これで、現在のシートが目的のシートと一致したかどうか分かります。
トリガーを追加します。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190042-00.jpg?resize=1024%2C627)
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190043-00.jpg?resize=1024%2C740)
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190043-01.jpg?resize=1024%2C349)
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190047-00.jpg?resize=904%2C309)
現在のシート名が取得できました!
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190053-00.jpg?resize=1024%2C355)
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行目です');
}
}
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190100-00.jpg?resize=1024%2C373)
取得できました!
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190058-00.jpg?resize=1024%2C348)
メールを送信する
あとは、メールを送信します。
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
}
);
}
権限を与える必要があるので、一度スクリプトを実行しておきます。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190107-00.jpg?resize=1024%2C427)
メールが送信されました!
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190108-00.jpg?resize=1024%2C574)
組み合わせる
あとは、これらをすべて組み合わせます。
[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
}
);
}
チェックを入れてみます。
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190111-01.jpg?resize=845%2C398)
メールが送信されました!
![](https://i0.wp.com/eguweb.jp/wp-content/uploads/202302190115-00.jpg?resize=798%2C568)
まとめ
これで、Google Apps Scriptを使用して、Google Sheetsの特定の範囲で1行目にチェックが入った場合に、その行のデータを自動的にメールで送信するスクリプトができました。
次は、内容を作っていきます。
つづく。