タダです。
最近、「Google Apps Scripts」(以下、GAS)を下記の書籍を読みながら勉強し始めました。業務の自動化や外部サービスとの連携ハブとして利用される文脈で登場する印象ですが、僕自身も興味があるサービスであったので実践的に使えるようになりたいと思ったのがモチベーションになります。
サーバーレスでお手軽自動化!Google Apps Script活用入門 (技術書典シリーズ(NextPublishing))
- 作者: 中山貴幸
- 出版社/メーカー: インプレスR&D
- 発売日: 2017/09/15
- メディア: オンデマンド (ペーパーバック)
- この商品を含むブログを見る
今回は、GAS について書籍で学んだことをまとめていきます。
GAS とは
GAS はクラウド上でスクリプトを実行することができるサービスで、ベースは JavaScript になっています。簡単な Hello World
を表示するためのコードを見ていただくとわかりやすいかと思います。
function myFunction() { Logger.log("Hello World"); }
また、GAS の特徴として次のものがあります。
Google サービスとの連携
例えば、 Gmail のアカウントから GAS でメールを送ることもできます。Gmail のアドレスから携帯アドレスに送ってみましたらちゃんと届きました。
function myFunction() { var recipient = "送信したいメールアドレス"; var subject = "テストメールです"; var body = "こんにちは! \n現在の時刻は" + new Date() + "です"; GmailApp.sendEmail(recipient, subject, body); }
また、カレンダーにイベントの登録も可能です。
function myFunction() { createCalendar( "テストイベント", 2019, 4, 7); } function createCalendar(title,year,month,day) { var calendar = CalendarApp.getCalendarById("Gmail のアドレス"); var date = new Date(year,month-1,day); calendar.createAllDayEvent(title, date); }
GAS の特有機能について
特筆すべきは、GAS には次のような JavaScript で実行できない特有のメソッドやクラスが用意されているので、試しにUrlFetchApp
を使って外部ドメインへアクセスしてみます。
機能名 | 役割 |
---|---|
UrlFetchApp | 外部ドメインのサービスへアクセスし、利用可能 |
Charts | グラフなどの図を作成し、利用可能 |
PropertiesService | KEY-VALUE 形式で値を保持し、スクリプト間で使いまわせる |
試しに Yahoo! の天気情報にアクセスしてみると、アクセスした結果がコンテンツとして返されました。
function myFunction() { var html = getResource("https://weather.yahoo.co.jp/weather/jp/13/4410/13104.html"); // ログ出力 Logger.log(html); } function getResource(url) { var response = UrlFetchApp.fetch(url); var contentText = response.getContentText(); return contentText; }
GAS から Slack への投稿
外部サービスとの連携させるようになりたいので、Slack と GAS を連携してみます。 Slack の Incoming Webhooks 機能を使って GAS からメッセージを Slack に投稿してみました。
function doPost() { var url = "Incoming Webhooks のURL"; var payload = { "text": "GASからのSlack投稿テストです" }; var options = { "method": "post", "payload": "payload="+ JSON.stringify(payload) }; UrlFetchApp.fetch(url, options); }
まとめ
GAS の入門として Google のサービスや外部サービスとも連携させる方法を学びました。
次はもっと他のサービスとも連携させて GAS を使ってみた結果をレポートします。