はじめに
こんにちは、新卒で入って入社3年目のnorthmkyです。
いままでの投稿ではyumコマンドについてや文字コードなど実業務でも役立つ基礎知識をまとめたものを書いていましたが、今回はプライベートでGoogle Apps Script、略称GASに触れたのでご紹介したいと思います。
題名を「5分で理解する」などと自身でいうのもなんですが巷でよくあるキャッチーで怪しい、ほんまかいな...というようなものになっておりますが、嘘ではないと思います。
ただ前提としてJSの経験がある必要あります。逆に言えばWEB界隈でJSを触ったことがある方は学習コストがほぼ0になります。本記事を読めばやりたいことはすぐ書けます。
理由としては
- JSとパラダイムがほぼ一緒
- JSと文法がほぼ一緒
- 標準でついているメソッド名が直感的でわかりやすい
の3点です。 ほぼ同じ思想なので、あとは特有の押さえておくべき用語とスクリプトと操作するアプリ画面の対応関係がわかれば書けるようになります。 それでは前置きはこのくらいにして紹介に入りたいと思います。
Google Apps Script(GAS)とは
「Googleの各種アプリ(Google スプレッドシート/Googleドキュメントなど)をアプリ内ではなく外から操作できるJSライクなプログラミング言語」です。 エクセルに対するVBAの関係と一緒です1。
実現できることの例としては、指定時間になったら特定のセルの値を読み出して外部アプリに渡すbotであったり、スプレッドシートだけでなくgoogleカレンダーにまとめてスケジュール登録したり、などなどができます。2
色々できるのですが、本記事では読者のみなさんに馴染みがあると思われるスプレッドシートを題材にします。
早速GASを理解する
GASでは操作対象のアプリをオブジェクトとして扱います。 スプレッドシートの場合、覚えるべきオブジェクトは下記3点のみです。
- Spreadsheetオブジェクト
- Sheetオブジェクト
- Rangeオブジェクト
アプリとスクリプト内のオブジェクトは下図のような関係性になっています。 ウィンドウ左はおなじみのスプレッドシート、右はGASです。 図のスクリプトは「特定のセル範囲に値を入れる」処理をします。
実行すると下記のようになります。
好き、という文字列が指定したセル範囲(=range
)に格納されました。
どうでしょうか、説明はこれだけです。
値を入れるというだけの処理の紹介ですが、これだけでもうスプレッドシートを自分の好きなように操れる気がしないでしょうか。 特別な文法を覚えたりする必要もありません。 ここでは記載していませんが、分岐/繰り返しなど基本構文はもちろんありますし、標準メソッドもあるので安心です。 「いやメソッドいちいち調べる感じじゃ...?」と思われた方、安心してください。 こちらの標準エディタは補完機能付きなので、適当にメソッド名を打っても実現したいことができるメソッドを見つけられる確率が高いです。メソッド名がわかりやすい...素晴らしい...
おわりに
GASの超入門として、スプレッドシートに対して処理を行うことを通して、GASをどのように書けるかをお伝えしました。
今回はお話しませんでしたが、webAPIを叩く機能も標準でありますし、google本家、またそうでない人によるたくさんのGAS用ライブラリもgithubで公開されています。 ですのでtwitter/slackBotも 開発環境構築なしでGoogleアカウントがあれば誰でも作成できる という敷居の低さも魅力的なGAS、皆さんも試してみませんか?
題名を裏切らない内容になっていれば幸いです。
付録:スクリプト作成〜実行の簡単な流れ
スクリプト作成方法
ツール
をクリックスクリプトエディタ
をクリック
これでスクリプトが立ち上がります。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
forms.gleイベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com
-
やや過大表現です。厳密にはGASは、エクセルに対するVBAのような、どこかのbookに紐付いて動く「Container Bound Script」と紐付かず単独で動く「Standalone Script」の2種類があるので厳密な表現ではないです。本記事では「Container Bound Script」のみを扱いますのでこのように表記しました。↩
-
ここで私は基礎を学びました。他にもいろいろな実例を平易に書いてありとてもわかりやすいです。 https://tonari-it.com/google-apps-script-manual/#toc2↩