関数で足りるか、GASにすべきか。迷ったときの3つの基準

関数で足りるか、GASにすべきか。迷ったときの3つの基準

記事
IT・テクノロジー
スプレッドシートの作業を楽にしたいとき、「関数でなんとかする」のか「GASを書く」のかで迷う場面があります。外注を考えている方からも、どちらを頼めばいいのか分からない、という声をよく聞きます。

結論から言うと、見るところは3つだけです。

■1. 人が開かなくても動いてほしいか

ここが最初の、そして一番大きな分かれ目です。

関数は、シートが開かれたときや値が変わったときに計算されます。裏を返すと、誰もファイルを開いていない間は何も起きません。

・毎朝9時に、前日ぶんの数字を集計しておく
・フォームに回答が入ったら、担当者にメールを送る
・月末に、その月のシートを自動で作る

こういった「人がいなくても進んでいてほしい処理」は、関数では作れません。時刻や出来事をきっかけに動かすにはGASが必要です。

逆に、開いたときに正しい数字が出ていればいいのであれば、関数のままで十分です。

■2. スプレッドシートの外とやりとりするか

関数が外の世界に触れる手段は、IMPORTRANGEやIMPORTXMLなど、かなり限られています。

・Gmailで届いた内容を読み取る
・Googleカレンダーの予定を取り込む
・Driveにファイルを作って共有する
・他のサービスのAPIからデータを取ってくる

このあたりが要件に入ってきたら、関数で粘るより最初からGASにした方が早いです。無理に関数で組むと、動いてはいるけれど誰も直せないシートができあがります。

よくあるのが、IMPORTRANGEを何十か所にも散らして、他のファイルから少しずつ引っぱってくるパターンです。これは外とやりとりしているように見えて、実際は「取りに行く通信」を大量に発生させているだけなので、重さの原因にもなります。窓口を一つにまとめるだけで、だいぶ変わります。

■3. 処理の途中に「判断」が挟まるか

条件が2つ3つなら、IFやIFSで十分きれいに書けます。

ただ、次のようになってきたら黄色信号です。

・IFのネストが5段を超えている
・「この場合は除外」という例外が、あとから何度も足されている
・いつ・何件処理したかを、あとから確認したい

このあたりはGASの方が素直に書けますし、何より後から読めます。読めるということは、直せるということです。

セルの中に長い数式を押し込むと、どういう意図で書いたのかが残りません。半年後の自分が読み解けないものは、他の人にはもっと読めません。

■それでも、関数で足りることは多い

ここまで書いておいてなんですが、GASは万能ではありません。書いた人以外が触れなくなると、それはそれで止まります。

QUERYやFILTER、ARRAYFORMULAを使えば、かなりの集計は関数で組めます。関数で足りるなら、そちらの方が壊れにくく、引き継ぎもしやすいです。

「自動化=GAS」ではなく、「開かなくても動く必要があるか」で選んでください。

■迷ったら、まず今の手順を書き出す

判断がつかないときにおすすめなのは、いま毎週やっている作業を、箇条書きで書き出してみることです。

そのうえで、各行を2つに分けます。

・決まったとおりにやっているだけのもの
・人が見て判断しているもの

自動化の対象になるのは前者だけです。これを分けるだけで、頼むべき範囲がはっきりしますし、見積もりも出しやすくなります。

私自身、自分の事業の帳簿と売上集計をGASで自動化していますが、最初にやったのはこの書き出しでした。全部を自動にしようとすると、たいてい途中で止まります。

■まとめ

・人が開かなくても動いてほしい → GAS
・スプレッドシートの外とやりとりする → GAS
・判断や例外が増えてきた → GAS
・それ以外は、関数で足りることが多い

迷ったら、いまの手順を書き出すところから始めてみてください。

────────
▼ この記事を書いた人
NEWTYPE(ニュータイプ)です。スプレッドシートとGASの改修、Webの調査・リスト作成、暮らしや働き方の記事執筆をしています。

・重い、動かないスプレッドシートを直します

・Webの公開情報を調べてリストにまとめます

・暮らし・働き方の記事を体験を交えて書きます

関数とGASのどちらがいいか、の切り分けだけでもご相談いただけます。いまの手順をそのまま教えてください。
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す