Google Apps Scriptのスクリプトプロパティの値が取得できなくなる不具合(2020年9月)
2020年9月下旬頃からGoogle Apps Script(GAS)プロジェクトのスクリプトプロパティで不具合が起こる事象が発生しています。
まだGoogle公式のお知らせはありませんが、スクリプトプロパティの値を参照できないエラーについて紹介します。
※2020年12月追記 本不具合はユーザーからのアピールもなくなったため、現時点では解消された模様です。
Google Apps Scriptのスクリプトプロパティとは
Google Apps Script(GAS)のスクリプトプロパティとは、GASのプロジェクト単位で紐付けておくことができるデータです。
GASのスクリプトエディタのメニュー「ファイル>プロジェクトのプロパティ」を選択し、「スクリプトのプロパティ」のタブに切り替えると表示されます。
スクリプトプロパティでは、「+行を追加」をクリックすると、左側のプロパティ(キー)と右側の値(バリュー)をセットすることができます。
スクリプトプロパティを保存しておくと、getPropertyメソッドを使用すると、GASのコードから保存した値を参照することができます。
スクリプトプロパティが参照できなくなる不具合
2020年9月29日ごろから、GoogleAppsScriptのスクリプトプロパティが参照できなくなる不具合が私のGAS実行環境で発生しています。
発端はトリガー実行でスケジュール登録して定期実行していたGASスクリプトがうまく実行できず、エラーしていることを発見したことです。
スクリプトがうまく稼働していない箇所を確認したところ、「スクリプトプロパティから値が取得できていないこと」が原因と判明しました。
スクリプトプロパティの値を呼び出すことができず、NULLになっていたため、スクリプトの実行がうまく行っていませんでした。
このGASスクリプトは、すでに1ヶ月近く稼働させていたプロジェクトでしたが、9月28日以降スクリプトプロパティの値参照ができなくなり、それまで実行できていたプログラムが実行できなくなりました。
全てのGASプロジェクトではなく一部で不具合発生
今回のGoogleAppsScriptのスクリプトプロパティの不具合は、スクリプトプロパティを利用しているすべてのプロパティで発生しているものではありません。
一部のプロジェクトでのみ発生しています。
SNSでも同じ事象が起きているユーザーの投稿があり、自分だけの環境ではないことが確認できています。
スクリプトプロパティの再設定でも復旧せず
スクリプトプロパティの値が参照できなくなった事象で、すでに存在しているスクリプトプロパティを削除して、再度設定してみました。
しかし、スクリプトプロパティ再設定後、スクリプトを実行してもスクリプトプロパティの値を読み取ることができませんでした。
さらに、プロパティ名で値を設定しても、スクリプトプロパティの取得に失敗し、復旧できませんでした。
GASスクリプトプロパティ不具合の対処方法
Google Apps Script(GAS)のスクリプトプロパティの不具合に対応する方法ですが、大きく2種類があります。
①GASプロジェクトの再作成
1つ目はGASプロジェクトを新たに再作成し、GASのコードを移植して再度スクリプトプロパティを設定する方法です。
新しいプロジェクトを作成すると、スクリプトプロパティに参照できるようになり、うまく実行できるようになりました。
ただ、プロジェクトの再作成しても、再度スクリプトプロパティが取得できないケースに1度遭遇しました。
そのため、スクリプトプロパティの問題が必ず解決する対処方法ではありません。
②スクリプトプロパティ利用をやめる
もう1つの対処方法は、そもそも不具合が起きているスクリプトプロパティをやめることです。
スクリプト内に参照する値をそもそも直書きしてしまうことで、スクリプトプロパティを回避します。
ただ、スクリプトプロパティにはAPIキーやパスワードなどの秘匿したい情報を格納しています。
そうした点でコード内にそうした情報を直書きしているのはセキュリティー上よろしくありません。
さらに、コードの保守性やモジュール化にも影響を与えるため、スクリプトプロパティが正常になるまでの暫定的な対応で使うのがオススメです。
(追記)setPropertyメソッドでも不具合が起きるケースも
多くのGASユーザーの間で、スクリプトプロパティが利用できないことが問題になっています。
スクリプトプロパティの不具合が生じたユーザーの方から、setPropertyメソッドを使ってスクリプトプロパティを設定する方法のコメントがありました。
ただ、GASのコードでのスクリプトプロパティのセットを行っても、うまく設定できない事象が発生しています。
現状スクリプトプロパティの利用は控え、スプレッドシートから参照する、または暫定でコード内に埋め込むといった対応がオススメです。
2020年12月時点でスクリプトプロパティの不具合は解消
Google Apps Script(GAS)のスクリプトプロパティ不具合は2020年9月に発生しました。
それから3ヶ月経過した12月時点では、スクリプトプロパティの不具合は完全に解消していました。
スクリプトエディタのメニューからのスクリプトプロパティの設定も問題なくできるようになり、getPropertyメソッドで問題なく値を取得できるようになっています。
まとめ・終わりに
今回、2020年9月にGoogle Apps Script(GAS)のスクリプトプロパティの値がうまく取得できなくなる不具合が発生したことを紹介しました。
すべてのGASプロジェクトで発生しているわけではなく、一部のプロジェクトのみのため、不具合については公式発表は確認できていません。
回避策としては、プロジェクト再作成するか、GASコードに値を直書きする2パターンがあります。
ただ、プロジェクト再作成でも失敗したケースが起きたため、完全に回避するにはコードにプロパティに格納していた値を直書きする方法がよいです。
しかし、スクリプトプロパティに格納するのはコードに直書きするのが好ましくない値なので、あくまで暫定処置として、どこかで復旧したタイミングで元に戻しましょう。
ディスカッション
コメント一覧
同事象が発生し困り果てていましたが、手動で登録したプロパティを削除した上で、
GASのスクリプトのsetPropertyメソッドでプロパティの登録を行ったところ
プロパティが読めるようになりました。(全員に作用するかは不明ですが・・・)
let p = PropertiesService.getScriptProperties();
p.setProperty(“key”, “value”);
…
森様
情報提供ありがとうございます。
いただいた情報をもとに私の環境で検証してみました。
ただ、私の環境では、手動登録したプロパティの削除が実行できず・・・
スクリプトプロパティの読み込みに失敗している他のプロジェクトでも検証したいと思います。
同じ現象に困っているため、情報共有させていただきます。
当方の環境では10/20時点でsetPropertyでもプロパティが設定されなくなりました。