2012-11-13 107 views
2

我想使用受保護的範圍來鎖定範圍,但通過使用用戶界面,我希望使用戶能夠進行編輯,插入新數據等。我只是希望編輯是有意的。Google Apps腳本 - 是否可以從腳本更新受保護的範圍?

我已經想到了一些解決方案,但我不確定它們將如何影響負載,並且不確定哪個方向是最佳方向: 取消保護範圍並重新保護,給予編輯權限並將它們帶走。使用java腳本代替內置的保護範圍功能。這看起來不太可能,但即使腳本是從我的帳戶運行的(工作簿都按照我的帳戶的設計工作,但我已編輯訪問受保護的範圍)。

任何幫助將不勝感激,在此先感謝。

腳本背景: 我有公司內部特定項目的工作簿和兩種同步的主工作簿。有一個查找鍵,只是設施/功能特定的標題,所以我有一個腳本,將允許兩個位置同時更新。我還爲新功能提供了模板,或者特定於設備的項目都有自己的模板,並且我需要用戶能夠在這些工作簿中添加新工作表,並使用這些數據更新主工作簿「AllTask​​s」工作表各種查詢,但在這兩個工作簿我需要有保護範圍。

回答

1

只有將腳本部署爲Web應用程序,才能從您的帳戶運行腳本。用戶將轉到單獨的URL,填寫表單,提交等,只要腳本在您的帳戶下運行(在部署爲Web應用程序時有此選項),它將插入/更新受保護的範圍因爲你有編輯權限。用戶仍然可以單獨進入工作簿並向其添加工作表(只要他們具有編輯權限),除非他們具有單獨的權限,否則他們不能觸摸受保護的工作簿。

但是,如果用戶將直接從電子表格運行這些腳本,我不相信可以從您的帳戶運行。但我認爲上述將是最好的解決方案。我沒有看到任何可以解除/保護範圍的腳本,只有表單。

+0

感謝您的迴應,我認爲對我來說,我可能只是使重複隱藏的列和如果列==#恢復列隱藏列的值....不完全喜歡它,但我認爲這將適用於我的目的 – Cheney

1

如果只需要防止意外編輯,您可以設置數據驗證規則。然後UI的腳本可以在編輯之前調整這些數據驗證規則。

var allowedText = "Yes" var cell = SpreadsheetApp.getActive().getRange('A1'); var rule = SpreadsheetApp.newDataValidation().requireTextEqualTo(allowedText).build(); cell.setDataValidation(rule); cell.setValue(allowedText);

這不會防止惡意,也不會防止隱藏,取消隱藏,刪除或添加的細胞或刪除單元格的內容,但它會防止電池的意外覆蓋。

相關問題