つい最近自動化に関するお仕事の話を頂き、いまさらになって初めてGoogleAppsScript(以下GAS)なるものを触ってみたのですが・・・これ、便利過ぎますね!
今までなんで触ってこなかったんだって後悔する位『可能性』を感じるものだったので、思う事を色々と綴っていきたいと思います。
- 目次 -
経緯
そもそもなぜGASに手を出すことになったか。
ある日メールボックスを覗くと以下の様な相談依頼が入っていました。
「○○というサイトのAPIを使って行う××の作業を、毎日決まった時間に実行してくれる様なツールを作って欲しい。PC環境問わず実行できればなお良い。後、好きなタイミングで手動実行もしたい」
という感じ。 ※内容は多少変えています。
処理内容がそこまで複雑じゃなかったので、受ける前提でまずは実装方法を考えてみることに。
■「環境問わず自動実行するアプリ」をどう実現するか?
(思考①) 自分の手持ちの武器(VB.NET、C#、VBA、Python)的に考えて、候補としてはPython位しか無いか?
(思考②) いや待て、Pythonでアプリを作ったとして自動実行はどうする?PCのタスクに加えて指定の時刻に実行する様に設定するか?
(思考③) いやいやいや・・・それだとPC点けっぱなしが前提になるし、そもそもそれで自動実行を実現するって何か違う・・・。
(思考④) 動かす相手はWebサービスなんだから、Webのどっかにアプリケーション置いてそれを実行してもらえば良いんじゃないか?とりあえずファイルはGドライブに置くとして、実行の手段は無いか・・・
(思考⑤) てかGドライブをサーバ代わりにしてWebアプリみたいなのできないかな?そういえばGoogleにExcelシートみたいな機能があった様な・・・そしてマクロみたいな機能も実装できるって聞いた覚えがあるぞ・・・これ使えるかな?
という感じで考えていった結果、スプレッドシートとGASの組み合わせに行き着いた訳です。
スプレッドシート自体の存在は以前から知ってはいたんですが、「いや、ただインストール不要で使えるWeb版Excelでしょ。Office買ってる身としては特にメリット感じないしOfficeExcelでいいよ。マクロもExcelほど自由度高くないって聞くし。」と思って敬遠していました。
・・・まぁこれはこれであってる部分もあるんですが。
でもExcelと違ってスプレッドシート&GAS”だからこそ”できる事があるという事に今回気付かされました。
スプレッドシート&GASのメリット
環境を問わない
人によって違うとは思いますが、個人的にこれが最大のメリットだと感じました。WindowsやMac、スマホといった環境を問わず、インターネット接続環境さえあればどこからでもアクセス可能ですし、ファンクションの実行も問題無く行う事ができます。
簡易的なWebアプリとして機能させる事ができる
「UrlFetchApp.fetch」というメソッドを用いて、簡単に外部のサイトにリクエストを送信する事ができます。かつ自分自身でもPOSTやGETのリクエストを受け取って処理する事ができるので、「ただの表計算シートとマクロ」という範囲を超えて簡易的なWebアプリとして機能させる事も可能です。
データはスプレッドシート上に書き込めば良いので、単純なデータ保存であればわざわざDBを用意する必要もありません。
ただしあくまでもGoogleのサービスの一部です。実行速度的にはいまいちですし、処理が失敗する事も普通にある様です。さすがにあまり精度を求められる様なものは作れませんね。
標準で備わっている自動実行機能
専用のトリガー設定画面が設けられており、最初からGASを用いた定期実行を想定した作りになっています。
『月』、『週』、『日』などの実行間隔も簡単に設定できるのが非常に便利ですね。
ただ毎日定期実行させる場合などは「午後12時~1時」の様に細かい指定ができないという難点がありますね。まぁ以下の様な手順で細かい指定もできるみたいですが。
(例)「午後7時30分に『A』という関数を実行したい」という場合
①GASで午後7時30分に『A』を実行するトリガーを作成する関数を作る
②通常のトリガー設定で、午後6時~7時指定で①の関数を実行するトリガーを作る
③午後6時~7時に①の関数が実行され、その後追加された7時30分のトリガーが実行される
という流れ。
注意点としては、Aの関数終了時に①のトリガーを削除する様にしておく必要があるという点。
うーん面倒臭い・・・。
他にも共有設定が簡単だったり、別サイトからの情報取得が驚く程簡単にできたりと挙げればまだまだ出てきそうですが、とりあえず個人的に気に入ったのは上記3点。
ですが、これだけでもう何かに使えそうでワクワクしてきませんか!?テンション上がってきますよね!
例えばどんな事に使えるか
実際にどんな使い道があるのかを考えてみたいと思います。
■Web上のどこかの値をモニターするのに使う
漠然とし過ぎていますが、何となくイメージは分かりますよね。
GASを調べている途中で「株価のモニターに使う」といった内容のコメントを見かけましが、確かにそういう用途には使えそうです。
「株価の推移をGAS上でチェックし、±○%の範囲を超えたらメールで知らせる」
的なものですね。
でもメール受け取って確認するまでにタイムラグがあるし、1秒を争う株トレードでそんな悠長にしてるヒマがあるなら、専用ソフト買った方がよくない?と思いましたがまぁそこは置いておきましょう。
■在庫管理ツールとして使う
ネット販売を行っている方の場合、通常は複数のサイトで同時に販売しつつ、「在庫は共有」という形を取っていると思います。
手動で在庫管理を行っている場合は「あっちのサイトで売れたからこっちのサイトの在庫を修正・・・」なんて事をしていると思いますが、ついつい更新が漏れてしまった結果「在庫切れなのに販売してしまった」という事が起きてしまいます。
そんな場合はスプレッドシート&GASで在庫管理ツールを作ってしまえば解決。
そこの販売先がAPI(プログラムから更新できる仕組み)を設けている事が前提にはなりますが、
⇒ 注文メールがあった場合はそれを読み取ってシート上の在庫を更新。
⇒ 続けて同じ商品を出品している他のサイトの在庫を更新
なんて事を自動で行う事も可能になります。
実際にランサーズあたりでそういう依頼を見かけました。
■定型業務の自動化
冒頭の依頼であった様な、日々行っている定型業務の自動化にも使えますね。
・・・
・・・
うーん・・・本当はもっとたくさん書けるつもりだったんですが、何も思い浮かばなかったので最後「定型業務」で纏めました。
ですがまぁ、この『GAS』が”何かに使えそうだ”というイメージが伝わればそれで良いです。
今後はちょくちょくGASに関する記事を書いていくと思うので、解説して欲しい内容などがあればコメントしていって下さい。ネタに使わせてもらいます。