2014年10月20日月曜日

GoogleAppsScriptをさわってみた

~はじめまして!~

渡辺と申します。
現在現在は、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 件のコメント:

コメントを投稿