Google Apps Script(以下GAS)というGoogleが提供している言語(とその開発環境,実行環境)があります。
GASは次のような特徴を持っています。
- Googleのサーバーで関数単位で実行してもらえる
- 「毎日朝8時に実行」「1時間毎に実行」といったタスクを設定できる
- 文法はほぼJavaScriptと一緒
無料だし,サーバーを用意しなくていので,定期的に行わせたいちょっとした処理があるときに便利です。
最近ちょくちょく使うので「どうやって使うのか」「どのように使われているのか」についてメモしておきます。
始め方
.gsファイルの新規作成
- Google Driveでファイルを新規作成するときに選べます
- 見当たらなければ「アプリを追加」から追加
編集画面
- 実行する関数を選択して,黒い三角のボタンを押すとプログラムを実行することができます
- 時計みたいなアイコンから「Google Apps Scriptダッシュボード」に移動できます
- ダッシュボードでは「こういう条件が満たされたら関数を実行する」といったトリガーの作成・管理を行うことができます
書き方の例
だいたいjavascriptみたいな書き方してれば動きますが,GAS独自のクラスなんかもたくさんあります。
Hello World
- jsなら
console.log()
ですが,GASではLogger.log()
を使って出力します - ログは
ctrl+Enter
で閲覧できます
function hello() { Logger.log('Hello World'); }
Spread Sheetの編集
Google Spreadsheetのデータを読み込んだり,書き込んだりできます。
function getDataFromSheet() { // シートを開く const SHEET_URL = ""; const SHEET_NAME = ""; var spreadSheet = SpreadsheetApp.openByUrl(SHEET_URL); var sheet = spreadSheet.getSheetByName(SHEET_NAME); // データ全取得 var data = sheet.getDataRange().getValues(); // 結果を表示 Logger.log(data); }
function addDataToSheet() { // シート指定 const SHEET_URL = ""; var spreadSheet = SpreadsheetApp.openByUrl(SHEET_URL); // 2番目のシートを選択 var sheet = spreadSheet.getSheets()[1]; // 任意の範囲に値を書き込み sheet.getRange(1, 1, 2, 2).setValues([["Orange", 130], ["Grape", 200]]); // 末尾に行を追加 sheet.appendRow(["Apple", 130]); }
Googleのサービスとの連携部分はとくに丁寧に作られていて,他にも,Goole Slidesに書き込んだり,Gmailから送信したりもできます。
企業によっては業務で使うデータをSpreadsheetで管理・共有していると思いますので,Spreadsheetからの入出力の自動化や,そこからの書類作成・プレゼン作成などの「次のアクション」を省力化できる点で非常に魅力的な技術だと思います。
使い方の例:企業での活用事例
どのように使われているのか,少し調べてみました。
スタートアップでのGAS活用事例 - Speaker Deck
- 日報管理
- タイムカード管理
- 記事集計表:記事を管理する別のシートからデータをもってきて集計
- シャッフルランチ(社内制度)の抽選を行うアプリ
- 予算管理表
- KGI・KPI管理表
といったものに使っていらっしゃるようです。なるほど…。
ダッシュボードのように「進捗をひと目でわかるようにしたい」というニーズで,かつ,「出力は表形式が適している」ようなデータを使って集計表・管理表を作っている感じでしょうか。
GAS(Google Apps Script)業務利用の事例
社内でのやりとりがメールでなくSlack等のチャットツールである企業の場合は,メールでなくチャットツールに通知させてもいいでしょうね(例えばSlackならAPIを使って)。
Google Apps Script 活用ミートアップ #2
- 営業チームごとの管理シートを集計し,結果を別のシートに書き出す
- Gmailから新規営業候補になり得る情報をリスト化してsheetに書き出し,slackに通知
- 指定した単語を指定した色でハイライトするChrome拡張
gmailに来るメールから有用な情報を発掘しようとする使い方は非常にユニークですね。
このイベントの詳細:
好評につき、Google Apps Script 活用ミートアップ(GAS活)の第2回目を開催しました! - Gaiax Engineers' Blog
Slackのログをスプレッドシートと連携して技術メモの整理に使っている話 - Qiita
企業の事例と言うか,エンジニア個人の活用事例ですが,面白い使い方かと思います。
私もSlackをメモ代わりに使うことが多いのでいつか使うかも
おわりに
GAS公式ページには色々なサービスと連携させていろいろできることが書いてあります。
GASのファイル自体をWebAPIにしたり,HTMLを入れてWebアプリにしたりもできるみたいです(参考)。
GASでできることが多すぎて私も把握しきれていません…
私は今の所,SpreadsheetをSlackAPIやその他のAPIと組み合わせて使ったりするくらいです。
「ちょっとした業務効率化アプリをササッと作る」といった用途にはとっても適しているように思いますので,今後も機会を見つけてGASを学んでいこうと思います。