2017-04-18 81 views
0

我有一個每月創建一個谷歌片,所以有writtena腳本,將當月的表的副本在一個特定的文件夾,然後填充到新的電子表格單元格從數據舊。它運作良好。防止電子表格谷歌腳本的手動複製

我想拿出一個解決方案,以警告用戶,如果他們試圖使用電子表格手動複製「進行復制」,而不是使用所提供的自定義菜單項的菜單項。

我想過在小區設置一個標誌,當然,這僅適用於第一次,作爲手動副本也複製標誌。如果我可以檢測到手動複製文件的時間,我可以重置該標誌,然後在打開時測試它。

有人可以請指出我在正確的方向。不幸的是,用戶需要能夠編輯文檔,所以我不認爲我可以禁用文件菜單中的選項。

非常感謝

回答

2

可以解決這個具體問題:

我想過在小區設置一個標誌,當然,只有 作品首次,作爲手動副本也複製該標誌。

通過使用PropertiesService,可以使用document屬性將屬性添加到特定文檔。該屬性可以由任何用戶在該特定文檔上運行的腳本訪問。

但是,如果您複製文檔,則不會複製該屬性。您可以在onOpen期間查找此屬性,並確定文檔是否以您想要的方式複製。

你可以做這樣的事情:

function setProp(){    //use this to set the property to the document 
var docProp = PropertiesService.getDocumentProperties(); 
    docProp.setProperty("Copied", "false")    //Properties are stored as text immaterially of the type of value you pass to it! 
} 

function getProp(){    //use this to check if the property of the document was set, if set will return true, else false 
    var docProp = PropertiesService.getDocumentProperties(); 
    Logger.log(docProp.getProperty("Copied")) 
    return docProp.getProperty("Copied") == "false" 

} 

function onOpen(e){      
var ui = SpreadsheetApp.getUi() 
if(getProp()){      // Check to see if the property was set for the sheet. 
    ui.alert("Copied correctly") 
} else {        // This will trigger each time they open the sheet, 
    ui.alert("Copied Incorrectly, please use custom function to make a copy") 
} 
} 

希望幫助!

+0

我實現了類似的東西,其中文檔ID是我存儲在「合法」副本上的東西,但是這個回答表明任何東西都是足夠的。如果Google將未來的複製轉變爲包含文檔屬性,那麼就需要像我的每個文檔特定的解決方案那樣。 – Jonathon

相關問題