見出し画像

GASの力で職場に温もりを!

あけましておめでとうございます!
新年一発目はGoogle Apps Script(GAS)の勉強をしました!!
※ガス機器の話ではありません。

先日、とある勉強会でGASという技術のお話をお伺いしました。名前は聞いたことあるものの、詳しいことは知りませんでした。が、お話をお伺いしているうちにその魅力に引かれていきました。興味のあるものは自分でググることができますが、興味のないものに興味を持つきっかけをいただけるのは人から教えていただく大きなメリットだと実感しました。

GASとは

各サイトに解説がりますが、自分なりにポイントを

・JavaScriptをベースとしたプログラミング言語である
・Googleドライブ・Google スプレッドシート・Gmail・Google フォーム・Google カレンダー…などなど の複数のGoogleのシステムを連携できる
・TwitterやslackなどGoogle外のシステムもAPIで連携できる
クラウド上で動作するので、ローカルアプリやサーバーが不要

Googleのアカウントがあれば、比較的学習コストの低いプログラミング言語で、Google各種サービス及び他システムで実施する作業を自動化できるツールだと認識しております。

使ってみた

Googleスプレッドシートで管理されているデータを定期的にgmailから自動通知するプログラムを作って見ました。

こんな感じのGoogleスプレットシートに複数の人が随時更新されるデータを想定します。この内容を定期的に対象の人にメールで送信するシステムを作ってみます。

スクリーンショット 2021-01-01 21.52.18

メールの送信先はこちらのシートで記載

スクリーンショット 2021-01-01 21.51.17

ちょいと、プログラムを書いて、、、

function SendMail(){
 // 対象のシートを指定
 var die = SpreadsheetApp.getActive().getSheetByName('おやつリスト');
 var send = SpreadsheetApp.getActive().getSheetByName('送信先リスト');

 // メールタイトルを変数で定義
 var MailTitle = "今日の、おやつリスト";

 // スプレッドシートの最終行まで取得。よく使う
 var dieLastRow = die.getLastRow();
 var sendLastRow = send.getLastRow();
 
 
 // お菓子リストを取得
 var dieListText = ""
 for(var i=2; i<=dieLastRow; i++){
   var rangeA = die.getRange('A' + i).getValue(); //おやつリストのA列を最終行まで取得していく。それを ' rangeA ' という変数に格納
   var rangeB = die.getRange('B' + i).getValue(); //おやつリストのB列を最終行まで取得していく。それを ' rangeB ' という変数に格納
   var rangeC = die.getRange('C' + i).getValue(); //おやつリストのC列を最終行まで取得していく。それを ' rangeC ' という変数に格納

   // メール本文のおやつリストを変数で定義。
   dieListText = dieListText+rangeA+":"+rangeB+"("+rangeC+")\n";
 }

 // メール送信を実施
 for(var i=2; i<=sendLastRow; i++){
   if (send.getRange(i, 3).getValue() == "送信対象"){
     var rangeA = send.getRange('A' + i).getValue(); //送信先リストのA列を最終行まで取得していく。それを ' rangeA ' という変数に格納
     var rangeB = send.getRange('B' + i).getValue(); //送信先リストのB列を最終行まで取得していく。それを ' rangeB ' という変数に格納

     // メール本文を変数で定義。rangeBの変数は送信時の宛名を入れておく
     // todayは送信時の日付と時間を表現させる
     var MailText = rangeB+"さん"+"\n\nいつもお世話になっております。\n\nお菓子名:値段(記載者)\n"+dieListText+"\n\n以上よろしくお願いいたします。\n\n";
   }


   GmailApp.sendEmail(rangeA,
                      MailTitle,
                      MailText)
 }
}

そして、トリガー(プログラムが実行されるタイミング)を指定すると!!

スクリーンショット 2021-01-01 21.51.44

1分に一回、スプレットシートの内容が指定の宛先にメール自動送信されるようになりました。

画像4

作ってみる

この自動化プログラムは、次の記事を参考にすると1時間程で動きました!!難しいコードや環境構築がなくとても手軽に感じました。

その他、メール操作については以下のサイトが参考になりました。

使い道を考えてみる

わざわざスプレッドシートの内容をメールで送らなくても、共同編集にすればいいのではとも思いますが、現実問題として社外ユーザーとのやりとりである場合は共同編集が禁止されている、メールで送るルールとなっているなどの場合もあるかと思います。
また、スプレットシート内容に応じて条件分岐などのプログラミングををすることで、必要な場合のみに通知を送るなどの使い方もできます。さらに、クライアント側で動くRPAなどとも異なり、クラウド上で動作するためローカルPC管理のコストもなく安定的に運用が可能です。

今回はGmailとGoogleスプレットシートの連携のみを試してみましたが、他にもさまざまなアプリとの連携が可能で、クラウドシステムが台頭してくるこれからの業務自動化のツールとしてすごく可能性があると感じました。(最近できた技術でもないですが笑)

これからいろいろ試していきたいと思います!!


この記事が気に入ったらサポートをしてみませんか?