盆暗の学習記録

データサイエンスを中心として,日々学んだことの備忘録としていく予定です。初心者であり独学なので内容には誤りが含まれる可能性が大いにあります。

Google Apps Scriptの基本の使い方と企業での活用事例

Google Apps Script(以下GAS)というGoogleが提供している言語(とその開発環境,実行環境)があります。

GASは次のような特徴を持っています。

  1. Googleのサーバーで関数単位で実行してもらえる
  2. 「毎日朝8時に実行」「1時間毎に実行」といったタスクを設定できる
  3. 文法はほぼJavaScriptと一緒

無料だし,サーバーを用意しなくていので,定期的に行わせたいちょっとした処理があるときに便利です。

最近ちょくちょく使うので「どうやって使うのか」「どのように使われているのか」についてメモしておきます。

始め方

.gsファイルの新規作成

  • Google Driveでファイルを新規作成するときに選べます
  • 見当たらなければ「アプリを追加」から追加

f:id:nigimitama:20190711210350p:plain

編集画面

  • 実行する関数を選択して,黒い三角のボタンを押すとプログラムを実行することができます
  • 時計みたいなアイコンから「Google Apps Scriptダッシュボード」に移動できます
  • ダッシュボードでは「こういう条件が満たされたら関数を実行する」といったトリガーの作成・管理を行うことができます

f:id:nigimitama:20190711213332p:plain

書き方の例

だいたい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

  1. 日報管理
  2. タイムカード管理
  3. 記事集計表:記事を管理する別のシートからデータをもってきて集計
  4. シャッフルランチ(社内制度)の抽選を行うアプリ
  5. 予算管理表
  6. KGI・KPI管理表

といったものに使っていらっしゃるようです。なるほど…。

ダッシュボードのように「進捗をひと目でわかるようにしたい」というニーズで,かつ,「出力は表形式が適している」ようなデータを使って集計表・管理表を作っている感じでしょうか。

GAS(Google Apps Script)業務利用の事例

  • Google Formの利用申請フォームに入力された情報を,Formと結びついたSpreadsheetから取得し,メールで通知してくれるアプリ
  • GASはGoogle Formに紐づけている

社内でのやりとりがメールでなくSlack等のチャットツールである企業の場合は,メールでなくチャットツールに通知させてもいいでしょうね(例えばSlackならAPIを使って)。

Google Apps Script 活用ミートアップ #2

  1. 営業チームごとの管理シートを集計し,結果を別のシートに書き出す
  2. Gmailから新規営業候補になり得る情報をリスト化してsheetに書き出し,slackに通知
  3. 指定した単語を指定した色でハイライトするChrome拡張

gmailに来るメールから有用な情報を発掘しようとする使い方は非常にユニークですね。

このイベントの詳細:
好評につき、Google Apps Script 活用ミートアップ(GAS活)の第2回目を開催しました! - Gaiax Engineers' Blog

Slackのログをスプレッドシートと連携して技術メモの整理に使っている話 - Qiita

企業の事例と言うか,エンジニア個人の活用事例ですが,面白い使い方かと思います。

私もSlackをメモ代わりに使うことが多いのでいつか使うかも

おわりに

GAS公式ページには色々なサービスと連携させていろいろできることが書いてあります。

GASのファイル自体をWebAPIにしたり,HTMLを入れてWebアプリにしたりもできるみたいです(参考)。

GASでできることが多すぎて私も把握しきれていません…

私は今の所,SpreadsheetをSlackAPIやその他のAPIと組み合わせて使ったりするくらいです。

「ちょっとした業務効率化アプリをササッと作る」といった用途にはとっても適しているように思いますので,今後も機会を見つけてGASを学んでいこうと思います。