2012-10-04 44 views
2

我正在通過庫在多個電子表格上部署腳本。 但是,如您所知,腳本無法知道它是否運行最新版本。尋找一種方法來獲取使用的庫版本?

我想通過爲我的代碼創建我自己的版本來解決這個問題。 我有一個Web服務回饋我的庫代碼的最新版本號,所以我可以比較它,但onOpen()無法運行fetchURL。我試圖打開一個電子表格,將保持信息,但再次onOpen()不讓你openById ...

onOpen()觸發器有安全限制,阻止我諮詢我可以使用的外部數據源保持我的版本。

注:我不想用腳本觸發了的OnOpen()事件。複製電子表格時,不會複製腳本觸發器。

因此,我想通過指向外部數據源(作爲URL,其他電子表格 - 任何東西!)來檢查onOpen()觸發器事件的庫版本。

有什麼建議嗎?

+0

如果你希望你的腳本能夠得到它正在內運行,那麼請去「明星」 @Edo的相應的[功能要求(#1369)](https://code.google.com項目版本/ p /谷歌 - 應用程序 - 腳本的問題/問題/細節?ID = 1369)。您的星星等於對此功能的投票。 (該請求位於官方Google Apps腳本支持頁面的官方Apps-Script問題跟蹤器中,[根據](https://developers.google.com/apps-script/support#missing-features))。 –

回答

3

最簡單的解決方案是將getVersion()方法添加到您的圖書館和手動每次更新庫時間更新。

編輯:我看你想知道的不僅僅是版本,但是這是否是最新版本。你可以存儲在ScriptProperties信息庫和具有這樣的功能:(我假設你確定與硬編碼CURRENTVERSION到代碼和每次重新部署web應用程序更改它)

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

腳本屬性可以通過文件>項目屬性菜單進行編輯,並且您可以在不重新部署腳本的情況下更改該值,因此通過更改該菜單中的latestVersion,您將使舊版本在調用isLatestVersion()時突然開始響應「false」。

+0

否問題是要知道代碼的版本是否最新。由於我們無法訪問庫版本號,因此我必須在數據源中從外部檢查信息,我會手動維護這些信息,以確定哪個版本號是最新版本號。然後我可以將它與正在運行的腳本版本號進行比較。問題在於onEdit()和onOpen()限制阻止使用urlfetch或onOpenById()訪問數據。所以我無法檢查我的用戶在打開電子表格時是否運行最新的代碼。 – VanacK

+0

啊,是的,看到我的編輯 –

+0

謝謝Corey,這是完美的。 – VanacK

0

,我知道的唯一的解決方法,我敢肯定,我已經看到了這個論壇(如果我發現將連接線),是提供某種機制,爲用戶手動運行一個腳本,將讓他們通過授權過程。這可能是工作簿開始時的一張表格,帶有一個按鈕和說明性文字按鈕。當腳本運行時,腳本本身可以刪除該「啓動頁面」表。

但由於該結果,而不是複製的電子表格,你可能需要一個腳本(比如,菜單驅動),將創造必要的初始頁面的電子表格的副本。

不理想,但這是我能想到的唯一的事情。

相關問題