glideでやれるというニュアンスに取れるタイトルですが、実際はGASを使って、トリガーで「スプレッドシートの変更時」をチェックしてメールするという仕組みです。
glideはGoogleスプレッドシートを用いているので、そのGoogleスプレッドシートから使えるGASを使えば出来るとすぐ分かる方は全く不要ですが、そのあたりの連携イメージがわかない方にはヒントになる記事のはずです。
glideアプリの新規投稿をメール通知する
仕組みとしては、アイデアカフェアプリがあります。glide製です。当然、ユーザーが新規投稿してもこのアプリ画面を見ない限り、投稿が認知できません。つまり放置になりますよね(笑)
それは困るので、投稿されたら通知が来るという仕組みを作りました。投稿とありますが、コメント機能も今はついていますが同様の仕組みです。
今回は説明を分かりやすくするため、新規投稿をメール通知するという点を紹介します。
アイデアカフェアプリ自体は、単にアイデアを思いついたら投稿して、あとはよしなにというサービスです。平和なアプリですのでゆるーく使ってもらえれば嬉しいです。ご要望があればお問い合わせからご連絡ください。
実装方法
- glideで使っているGoogleスプレッドシートを開く
- ツール→スクリプトエディタでGASを開く
- コードを貼り付ける
- トリガーを設定する
- 動作確認をする
1.glideで使っているGoogleスプレッドシートを開く
glideとGoogleスプレッドシートは連携しているので、そのスプレッドシートを開きます。
画面で言えば、左のメニューにあるペンアイコンになります。クリックすると、スプレッドシートに飛びます。
2.ツール→スクリプトエディタでGASを開く
次に、Googleスプレッドシートでスクリプトエディタを開きます。GASを使ったことがない人は思い切って押してみましょう。
これも画面的にはツールを押すとスクリプトエディタという文字があるのでそこをクリックすればオッケーです。
3.以下のコードを貼り付ける
GASを触ったことがない人はコピペでいきたいところですが、メールアドレスと、通知するメール内容は適宜変更してください。
function automail() {
var sheet = SpreadsheetApp.getActiveSheet(); // シートの取得
// 追加されたアイデア=行を取得する
var lastRow = sheet.getLastRow();
// 空白データも込みで取得する
var data = sheet.getRange(lastRow,2,1,4).getValues();
var subject = '【アイデアカフェ】新規投稿がありました!';
var contents ='【投稿データ】\n'
+ 'タイトル:' + data[0][0] + '\n'
+ '内容:' + data[0][1] + '\n'
+ 'タグ:' + data[0][2] + '\n'
+ 'お名前:' + data[0][3] + '\n'
+'\n\n'
+'上記アイデアがアイデアカフェに投稿されました。\n'
+'確認して承認するかどうかを決めてくださいませ。\n';
MailApp.sendEmail("【通知先メールアドレス】",subject,contents); // メールを送信する
}
getRange()が分かりづらいですが、最終行=つまり新規投稿の行で、2列目のセルを起点にして、4セル分取得するということです。メッセージのcontents部分の最後にglideアプリの編集画面のURLを入れていますが、それも適宜お好みでというかんじですね。
上のイメージが投稿データがスプレッドシートに入っているという感じです。最終行だと想定してください。すると、タイトル、内容、タグ、お名前の4つが格納されるということですね。
最後に、【通知先メールアドレス】に送付先のメールアドレスを入れることをお忘れなく。
4.トリガーを設定する
GASではトリガーという定期監視機能があり、時間でも選べますが、ここではスプレッドシートが変更されたらという時点でコードが動くようにします。
スクリプトエディタで、編集→現在のプロジェクトのトリガーを選んでください。
上から順に、実行する関数はautomailという名前にしてあったのでそれを選択してください。
イベントのソースは、スプレッドシートから。最後のイベントの種類は変更時として、保存します。
5.動作確認をする
実際に、今回であればアイデアカフェアプリですが、投稿すると、メールが来ます。これでユーザーの投稿がいつでも分かるので便利です。ほとんど投稿がないのですが、たまにあると確実にチェックできるので便利ですよ(笑)
こんな感じでメールが来ます。めでたしめでたし。
課題
実はスプレッドシートを変更するというトリガーは、空白とか入るだけでも駄目なので、スプレッドシート自体をいじっているとメールが来ちゃいます(笑)そこは課題ですが、まあそこまでシビアでないとしてご愛嬌ということで。
改造アイデア
今回は新規投稿でしたが、実は新規コメントでも使えます。シート名は
// シート名を取得する
var sheetname = sheet.getName();
で取得出来るので、sheetname に対して if で判断すればオッケーです。つまり、投稿シートとコメントシートは別なので、それぞれのシート名で「新規投稿」「新規コメント」の有無をチェックできるというわけですね。
コメントが沢山あれば鬱陶しいかもしれませんが、そうなったら逆に変更トリガーでなく、週1で件数だけチェックするとかの要約メール通知のほうが良さそうですね。あいにくそんな感じではないので、このまましばらく運用しています(笑)
以上、glideとGASでメール通知連携というところでヒントになれば幸いです。