Google Apps Script が突然動かなくなったときにすべきこと

今回も、Google Apps Script(GAS) の話題です。GASは手軽なのに、かなり高機能なシステムを組むことができるプログラミング環境です。もし、職場でG Suiteを使っているのであれば、あなたや同僚の仕事を効率化することができるかもしれません。例えば 、Google Calendar の予定を自動手的に登録したり、定例レポートをスプレッドシートに吐き出してチームに自動的に共有するようなタスクが簡単に作成できます。

ただし、重要な業務を担うシステムを組む場合は注意が必要です。テストでバグをすべて解消したとしても、システムが突然動かなくなるリスクが、GCPやオンプレミスで組んだシステムに比べると高いことを知っておく必要があります。

私もこの5年で様々な困った状況にぶち当たりました。そこで、どのように対応をしてきたのか、システム開発を請け負うベンダーとしての立場で、まとめてみます。

GAS はサポート対象外であることを知っておく

まず知っておくべきことは、GAS はサポートを受けられないことです。これは、有償の G Suite 契約者でも受けられません。私も何度か困ったときにGoogleに問い合わせているのですが、答えは「UI から再現できないことはサポート外です」です。以前、CalendarのAPI(CalndarApp)で特定のシチュエーションで通知メールが飛ばない挙動があったのですが、UI から再現できず、サポートを受けることはできませんでした。基本的にGASのAPIでできることはUIでもできる(一部UIでのみ可能なことはある)のですが、サポートを受けられるかどうかは無関係です。

これに関しては、Googleに文句を言ってもどうしようもありません。それに納得してGASを利用する必要がありますし、お客様に対しても、それを納得してご利用いただく必要があります(私たちは、請負開発の契約書で明記しています)。

情報収集(&提供)は Google の IssueTracker で

 Google 側のバグかな?と思ったときの情報ソースとしては、Google Issue Tracker が一番です。GAS に限らず様々なバグ報告や要望が集まっているので、似たようなケースが見つけられることが多いです。

私が体験した中で一番大きかったのは、GAS のJDBCのバグで、「コネクションタイムアウトが常に0になってしまうことで、ほとんどのSQLがエラーになってしまう」問題です。

これも、今だから上記が原因だとわかるわけですが、ユーザーに表示されるエラーメッセージは直感的でなく、まったく見当が付きません。私のところにも複数のお客様から問い合わせがあったのですが、ワークアラウンドすら見つからず、とても苦労した記憶があります。

上記のような派手な問題は、世界中のユーザーからの報告や問い合わせ、改修要望が相次ぐため、比較的見つけやすいです。類似のIssueを見つけたら、手持ちの情報を補足するか、「同じ現象が起きてる!ASAPで対応して!」などのコメントを送りましょう。

お客様へは事実ベースでこまめに報告を

GAS内部で発生した問題は「放っておけばいつか修正される」「こちらでできることが少ない」とはいえ、お客様に対しては事実をこまめに報告すべきです。上記JDBCの問題は解決するのにほぼ1日必要でしたが、その間にお客様には複数回の状況報告を行いました。報告内容も、Issue Tracker から引用します。

  • 問題が発生したと思われる日時(報告が上がり始めた日時)
  • Google からそれを認識した日時(Google のエンジニアがIssue Tracker 状で問題を認めた日時)
  • 問題解決に向けてステータスが更新された日時と内容
ちなみに、以下が実際の報告内容の一部です。
 
Nov 28, 2018 午前~      世界中より問題がGoogleに報告され始める
Nov 28, 2018 10:46PM  Googleが問題を認め調査開始
Nov 29, 2018 02:38AM  Googleロールバックを開始
Nov 29, 2018 07:30AM  当社が状況が改善されていることを確認 

 

事実ベースであることが肝要です。こちらで対応できることが少ない分、正確な情報を出しつつ、その間に運用回避策を検討します。

βサービスは極力本番では使わない

ここまでは、ある意味Google内部で発生したバグが原因の突発的な事象です。一方、サービス終了に伴う、「予期できるシステム停止」もあります。Google のサービスやAPIは割とスパっと終了します。もちろん猶予期間はありますが、システムで利用していた場合は、それに合わせた改修が必要となります。

例えば、FusionTables 。これは結局βのまま終了が決定し、もうすぐ利用できなくなります。 Realtime API は正式リリースされましたが終了しました。大きなところではGoogle+も終了しますね。

もちろん、サービスの終了は予想できるものではないのですが、せめてβサービスの本番利用は避けるなどの手堅さは持ちましょう。以下、G Suite の最新状況ヘルプページが役に立つことも多いので、こまめにチェックします。

support.google.com

まとめ 

当たり前のことなのですが、情報をこまめに収集し、無理な使い方はしない、ということですね。あと、Google Issue Tracker の使い方に慣れておくと良いでしょう(Google へのログインが必要です)。

いろいろ怖そうなこと書きましたが、基本的なサービスのAPIは安定していますし、大きなインパクトのあるサービス終了も1年程度前から予告が入ります。お客様ともGASのメリット・デメリットを共有し、賢く便利に利用していきましょう。