![Googleスプレッドシートで特定セルの変更時にメールで通知する方法](https://iwb.jp/wp-content/uploads/2024/06/notify-via-email-when-specific-cell-changes-in-google-spread-sheets.png)
特定セルの変更時にメールで通知する機能が追加
先日、米GoogleからGoogleスプレッドシートで特定セルの変更時にメールで通知する機能を追加するという発表がありました。
Googleスプレッドシートで特定セルの変更時にメールで通知する方法
この機能は2024年6月18日から段階的に展開されます。
しかし、機能が追加されるのは以下の有料版のGoogleスプレッドシートのみで、多くのユーザーが使用している無料版では使用できません。
- Business Standard
- Business Plus
- Enterprise Starter
- Enterprise Standard
- Enterprise Plus
- Education Plus
- Enterprise Essentials
無料版でもセルの変更をメールで通知する方法
前述のセルの変更を通知する機能は無料版のGoogleスプレッドシートでは使えないが、Apps Scriptを使用すればセルの変更を検知してメールでの通知が可能です。
この記事ではシート1のB2セルが「承認」に変更されたら、メールが送信されるようにするやり方について説明します。
![Googleスプレッドシートで特定セルの変更時にメールで通知する方法](https://iwb.jp/wp-content/uploads/2024/06/notify-via-email-when-specific-cell-changes-in-google-spread-sheets.png)
↓セルが特定の文字に変更されると、このようにメールの通知が来るようにします。
![](https://iwb.jp/wp-content/uploads/2024/06/notify-via-email-when-specific-cell-changes-in-google-spread-sheets-gmail.png)
まず、このサンプルのように「シート1」と「status」というシートがあるスプレッドシートを作成してください。
次に「拡張機能 → Apps Script」を選択して、コード.gsに以下のコードを貼り付けます。
example@gmail.comは送信先のメールアドレスに変更してください。
const ss = SpreadsheetApp.getActiveSpreadsheet()
const sheet1 = ss.getSheetByName('シート1')
const sheetStatus = ss.getSheetByName('status')
const cellValue = sheet1.getRange('B2').getValue()
const cellStatus = sheetStatus.getRange('A2').getValue()
const checkWord = '承認'
function checkCellAndSendEmail() {
if (cellValue === checkWord && cellStatus === 'edit') {
const to = 'example@gmail.com'
const subject = `B2セルが「${checkWord}」になりました。`
const body = subject
sheetStatus.getRange('A2').setValue('done')
MailApp.sendEmail(to, subject, body)
}
}
function onEdit(e) {
if (e.range.getSheet().getName() === 'シート1' && e.range.getA1Notation() === 'B2') {
if (cellValue === checkWord && cellStatus !== 'edit' && cellStatus !== 'done') {
sheetStatus.getRange('A2').setValue('edit')
}
}
}
onEdit関数部分は編集時に「シート1」の「B2」セルが「承認」に変更されたときに「status」シートの「A2」に「edit」を挿入する処理になっています。
checkCellAndSendEmail() 関数は「シート1」の「B2」セルが「承認」かつ、「status」シートの「A2」が「edit」のときにメールを送信する処理になっています。
checkCellAndSendEmail() 関数はApps Scriptのトリガーを使用して、時間ベース(1分おき)に実行させます。
![](https://iwb.jp/wp-content/uploads/2024/06/notify-via-email-when-specific-cell-changes-in-google-spread-sheets-trigger.png)
以上の作業が完了したら、GoogleスプレッドシートでB2セルを「承認」に変更するとメールが通知されるようになります。
![](https://iwb.jp/wp-content/uploads/2024/06/notify-via-email-when-specific-cell-changes-in-google-spread-sheets-gmail.png)
メールが送信されると「status」シートの「A2」が「done」になるため、それ以降は送信されなくなります。
再度送信されるようにするには各シートの該当セルを元の状態に戻してください。
記事に記載したApps Scriptのコードを応用すれば、単一のセルではなく複数のセルが変更された際にメールを通知させる処理も簡単に作成可能です。