渡辺と申します。
現在現在は、A-AUTO 50の開発と、アジャイルで社内インフラの開発などをしています。
就職して2年目の新米技術者なので、勉強することが山ほどあります。
なので、勉強したことや、疑問に感じたこと、「なるほど!」と感じたことなどを
ブログとして残して行こうと思います。よろしくお願いします。
~GoogleAppsScriptと触れ合ってみる~
さて、ここからが本題です。
最近「GoogleAppsScript」について調査をしているので、少し紹介してみようかと思います。
~GoogleAppsScriptってなに?~
⇒サーバーサイドのスクリプト言語
JavaScriptでコーディングでき、Google Appsのサービスに対して処理を実行することができます。
応用として、複数のサービスを連携させて処理を実行したり、実行のトリガを設定したりできます。
例)毎朝9時にスプレッドシート内のデータを集計して管理者に報告メールを出す
(gmailとスプレッドシートの利用)
◆マメ知識
GoogleAppsScriptは「GAS」と略され、コミュニティとして「TokyoGAS」なんてのもあるそうです。
◆ちなみに「GoogleApps」って?
独自ドメインでGmailをはじめとするいくつかのGoogleプロダクトを使えるようにする企業向けサービスである。従来のオフィススイートやグループウェアに似た機能を持つ、Gmail、Google Contacts、ハングアウト、Google ドライブ、ドキュメント、Googleスプレッドシート、Google スライド、Googleカレンダーや、Googleグループ、サイトといったウェブアプリケーションが含まれる。(wikiより抜粋)
◆使い方の参考に
Google Apps Script — Google Developers
https://developers.google.com/apps-script/?hl=ja
→GoogleAppsScriptで用意されている関数郡
ドットインストール – Google Apps Script入門
http://dotinstall.com/lessons/basic_google_apps_script
→私は手始めにこれを使いました。
~スプレッドシードでスクリプトを組んでみる~
まず私が業務で一番触れることの多い「スプレッドシート」と「Gmail」を使ってGASのサンプルを作ってみたので、紹介したいと思います。
サンプルの処理は、日々の残業時間を記録して残業時間が多くなってきたらメールでお知らせをくれます。
※実際に組んだソースコード
--------------------------------------------------------------------------
function sendMail(){
var raw = 33;
var colm = 2;
//条件に応じてユーザに警告メールを送信する
for(colm; colm < 9; colm++) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(raw,colm);
if ( ss.getValue() > 35 && ss.getValue() < 45) {
MailApp.sendEmail(getMailAddress(colm),
'残業時間が35時間を超過しました。', 'このまま残業が続くと体調を壊してしまいますよ。');
}else if(ss.getValue() > 45 && ss.getValue() < 55) {
MailApp.sendEmail(getMailAddress(colm),
'残業時間が45時間を超過しました。', 'このまま残業を続けるとかなりマズイです・・・');
}else if(ss.getValue() > 55) {
MailApp.sendEmail(getMailAddress(colm),
'残業時間が55時間を超過しました。', '休みましょう!');
}
}
}
//ユーザのメールアドレス群
function getMailAddress(colm){
var meilList = new Array();
meilList[2] = null; //Aさん
meilList[3] = null; //Bさん
meilList[4] = null; //Cさん
meilList[5] = null; //Dさん
meilList[6] = null; //Eさん
meilList[7] = "userf@gmail.co.jp"; //Fさん
meilList[8] = "userg@gmail.co.jp"; //Gさん
return meilList[colm];
}
--------------------------------------------------------------------------
スクリプト実行用に、人、日付、計(SUM関数を使用)を記入したシートを自分で用意しました。
では実際にスクリプトが実行されるか試してみます。
getMailAddress()内で設定するメールアドレスに
スプレッドシート内に数値を入れてから作成したsendMail()の実行をしてみると・・・
無事にメールが送られました!
◆使い方メモ
SpreadsheetApp.getActiveSpreadsheet() →スクリプトを実行するスプレッドシートの定義
getActiveSheet() → スクリプトを実行するシートの定義
getRange() → スクリプトを実行するセルの定義
"2","3"で2行目の3列目と定義したり、"B3"と直接呼び出すこともできるようです
getValue() → getRange()で定義されたセルに格納されている値を取得
MailApp.sendEmail('メールアドレス','メールタイトル', '本文') → メールの送信
今はメールアドレスをハードコーディングしているのですが、ここは別シートに用意すると汎用性が挙がりそうですね・・・
また、GoogleAppsのContactsサービスというサービスでメールアドレスを取得するような関数が用意されているようなので、そちらのサービスと連携させるのもありかもしれませんね!
0 件のコメント:
コメントを投稿