【Google Apps Script】自分がGASで使うIDとかトークンを1つのシートで管理するライブラリを作ろうとしたけど、断念した話

Code

はじまり

リサちゃん
リサちゃん

よし、Google スプレッドシートを使って、

IDとかトークンを管理できないかなあ。

それを別のスクリプトから呼び出すんだ。

135ml
135ml

えっとねええ、それ、あんまり効果出ないかも・・・

リサちゃん
リサちゃん

うそーん?

135ml
135ml

じゃあ、今回はそのことについて触れてみよう

やりたかったこと

僕は、Google Apps Scriptで作成するツールに、一つのID管理ライブラリを通じてフォルダやスプレッドシートやその他URLやらを参照させるようにしています。

詳細は、この記事で紹介しています。

しかし、そのやり方だと、IDのキーと値をいちいちスクリプトのコンソール画面を開いて、入力しなければなりません。

その作業が面倒くさかったので、スプレッドシート上で編集できるようにしたのが楽かなと思ったのです。

ツールのイメージはこんな感じです。

「キー」と「値」の列に入力していって、それをスクリプトであーだこーだして、最終的にオブジェクトとして別のライブラリに渡すのです。

しかし、断念・・・

しかし、程なくして、このプロジェクトは停止することになったのです・・・・

理由は、スプレッドシートを開いた瞬間にスクリプトを実行してくれる、SImple Triggerというイベントハンドラというものが、Google Apps Scriptには実装されています。

そのSimple Triggerを使えば、スプレッドシートを開いた時に自作のメニューを追加してくれます。(下の画像の「フォルダ作成処理」というのが自作のメニューです。)

しかしながら、このSimple Triggerでスクリプトを実行すると、どうやら一部の機能が権限的な理由で利用できなくなってしまうようなのです。

実際に、今回のスプレッドシートを使ってオブジェクトを渡すためには、SpreadsheetApp.openById()の関数を使用しなければなりません。(getActiveSpreadsheet()的なものを呼び出すと、このID管理ライブラリのシートを参照してしまいます。)

結局、スプレッドシートをonOpen時に読み込んでメニューを表示させる方法としては、スプレッドシート上にボタンを配置して、それを最初にクリックする手段しか思いつきませんでした・・・

実際に、このonOpenをなんとか出来ないものかを四苦八苦した記事が以下のものです。

しかし、どうにもなりませんでした・・・。なんせ、スクリプトが実行されないので・・・。

これが、僕がID管理をスプレッドシート上で行うことを断念するまでの物語でした。

貴方は、同じ轍を踏まないようにお気を付け下さい。

出来たようでしたら、それはそれで方法を教えてもらいたいものです!

おしまい

リサちゃん
リサちゃん

悲しい・・・スプレッドシートだったら編集が楽なのに・・・

135ml
135ml

こんな権限のトラップがあるとは思わなかったよ・・・

リサちゃん
リサちゃん

他になんか楽にIDをメモっておけるツールとかないかなあ?

135ml
135ml

同じGoogleだったら、GCPのSecret Managerとか?

少しお値段が掛かるけど・・・

Secret Manager  |  Google Cloud
Google Cloud の Secret Manager を使用すると、API キー、パスワード、証明書、その他のセンシティブ データを安全に保存できます。

以上になります!

コメント

タイトルとURLをコピーしました