はじまり
よし、Google スプレッドシートを使って、
IDとかトークンを管理できないかなあ。
それを別のスクリプトから呼び出すんだ。
えっとねええ、それ、あんまり効果出ないかも・・・
うそーん?
じゃあ、今回はそのことについて触れてみよう
やりたかったこと
僕は、Google Apps Scriptで作成するツールに、一つのID管理ライブラリを通じてフォルダやスプレッドシートやその他URLやらを参照させるようにしています。
詳細は、この記事で紹介しています。
しかし、そのやり方だと、IDのキーと値をいちいちスクリプトのコンソール画面を開いて、入力しなければなりません。
その作業が面倒くさかったので、スプレッドシート上で編集できるようにしたのが楽かなと思ったのです。
ツールのイメージはこんな感じです。
「キー」と「値」の列に入力していって、それをスクリプトであーだこーだして、最終的にオブジェクトとして別のライブラリに渡すのです。
しかし、断念・・・
しかし、程なくして、このプロジェクトは停止することになったのです・・・・
理由は、スプレッドシートを開いた瞬間にスクリプトを実行してくれる、SImple Triggerというイベントハンドラというものが、Google Apps Scriptには実装されています。
そのSimple Triggerを使えば、スプレッドシートを開いた時に自作のメニューを追加してくれます。(下の画像の「フォルダ作成処理」というのが自作のメニューです。)
しかしながら、このSimple Triggerでスクリプトを実行すると、どうやら一部の機能が権限的な理由で利用できなくなってしまうようなのです。
実際に、今回のスプレッドシートを使ってオブジェクトを渡すためには、SpreadsheetApp.openById()
の関数を使用しなければなりません。(getActiveSpreadsheet()
的なものを呼び出すと、このID管理ライブラリのシートを参照してしまいます。)
結局、スプレッドシートをonOpen時に読み込んでメニューを表示させる方法としては、スプレッドシート上にボタンを配置して、それを最初にクリックする手段しか思いつきませんでした・・・
実際に、このonOpenをなんとか出来ないものかを四苦八苦した記事が以下のものです。
しかし、どうにもなりませんでした・・・。なんせ、スクリプトが実行されないので・・・。
これが、僕がID管理をスプレッドシート上で行うことを断念するまでの物語でした。
貴方は、同じ轍を踏まないようにお気を付け下さい。
出来たようでしたら、それはそれで方法を教えてもらいたいものです!
おしまい
悲しい・・・スプレッドシートだったら編集が楽なのに・・・
こんな権限のトラップがあるとは思わなかったよ・・・
他になんか楽にIDをメモっておけるツールとかないかなあ?
同じGoogleだったら、GCPのSecret Managerとか?
少しお値段が掛かるけど・・・
以上になります!
コメント