Googleスプレッドシートで特定セルの変更時にメールで通知する方法

特定セルの変更時にメールで通知する機能が追加

先日、米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スプレッドシートで特定セルの変更時にメールで通知する方法

↓セルが特定の文字に変更されると、このようにメールの通知が来るようにします。

まず、このサンプルのように「シート1」と「status」というシートがあるスプレッドシートを作成してください。

次に「拡張機能 → Apps Script」を選択して、コード.gsに以下のコードを貼り付けます。

example@gmail.comは送信先のメールアドレスに変更してください。

Apps Script
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分おき)に実行させます。

以上の作業が完了したら、GoogleスプレッドシートでB2セルを「承認」に変更するとメールが通知されるようになります。

メールが送信されると「status」シートの「A2」が「done」になるため、それ以降は送信されなくなります。

再度送信されるようにするには各シートの該当セルを元の状態に戻してください。

記事に記載したApps Scriptのコードを応用すれば、単一のセルではなく複数のセルが変更された際にメールを通知させる処理も簡単に作成可能です。