3

ライブラリを介して複数のスプレッドシートにスクリプトを展開しています。しかし、ご存知かもしれませんが、スクリプトが最新バージョンを実行しているかどうかを知る方法は (まだ) ありません。

コードの独自のバージョン管理を作成することで、これを回避する方法を見つけようとしています。ライブラリ コードの最新バージョン番号を返す Web サービスを持っているので比較できますが、onOpen() は fetchURL を実行できません。情報を保持するスプレッドシートを開こうとしましたが、やはり onOpen() で openById を開けません...

onOpen() トリガーにはセキュリティ上の制限があり、バージョン管理を維持するために使用できる外部データ ソースを参照できません。

注: onOpen() イベントにスクリプト トリガーを使用したくありません。スプレッドシートをコピーしても、スクリプト トリガーはコピーされません。

そのため、onOpen() トリガー イベントで外部データ ソース (URL、他のスプレッドシートなど) をポイントしてライブラリ バージョンをチェックする方法についてのアイデアが不足しています。

助言がありますか?

4

2 に答える 2

4

最も簡単な解決策は、 getVersion() メソッドをライブラリに追加し、ライブラリを更新するたびに手動で更新することです。

編集済み:バージョンだけでなく、これが最新バージョンかどうかも知りたいと思います。その情報をライブラリの ScriptProperties に保存し、次のような関数を作成できます。

function isLatestVersion() {
  return currentVersion == ScriptProperties.getProperty("latestVersion");
}

(currentVersion をコードにハードコーディングし、Web アプリケーションを再デプロイするたびに変更しても問題ないと思います。) スクリプトのプロパティは [ファイル] > [プロジェクトのプロパティ] メニューから編集でき、スクリプトを再デプロイせずに値を変更できます。そのメニューから latestVersion を変更すると、isLatestVersion() を呼び出したときに、古いバージョンが突然 "false" を返し始めるようになります。

于 2012-10-05T02:47:02.533 に答える
0

私が知っている唯一の回避策は、このフォーラムで見たことがあると確信しています (スレッドが見つかったらリンクします)。承認プロセス。これは、ワークブックの先頭にあるシートで、押すボタンと説明テキストが含まれている場合があります。スクリプトが実行されると、その「スプラッシュ ページ」シートがスクリプト自体によって削除される可能性があります。

しかし、その結果として、スプレッドシートをコピーするのではなく、必要なスプラッシュ ページを含むスプレッドシートのコピーを作成するスクリプト (メニュー駆動型など) がおそらく必要になるでしょう。

理想的ではありませんが、それが私が考えることができる唯一のことです.

于 2012-10-04T22:29:33.693 に答える