2016-07-05 75 views
1

我是Apps Script的新手,並且一直在放慢自學。我搜索了Stack Over Flow,發現了類似的問題,並嘗試使用找到的信息解決問題,但迄今爲止沒有成功。希望有人在這裏可以給新手一些指導。Google表格 - 允許用戶在受保護的範圍上運行腳本

我有我與其他用戶共享一個電子表格。有幾個範圍內的公式,我試圖保護。我寫了一個腳本,可以在受保護的範圍內更改論壇。它在我的帳戶下運行良好,但共享用戶無法運行該腳本,因爲他們「沒有權限」。

我曾嘗試寫一些代碼,試圖給予臨時的編輯權限保護的範圍。我的想法是有三個不同的功能。第一個功能刪除保護。第二個功能執行對現在不受保護範圍的更改。第三個函數然後再次保護範圍。下面的代碼完全適用於我的帳戶。但是因爲它會導致警告說,一個共享的用戶登錄時「您沒有權限執行。」

有人可以告訴我在哪裏,我錯了,並指出我在正確的方向?

function myFunction() { 
    //add protections back 
    var ss = SpreadsheetApp.getActive(); 
    var sheet = ss.getSheetByName('Spray Template'); 
    var range = sheet.getRange('B15:E15'); 
    var range2 = sheet.getRange('G15:H15'); 
    var range3 = sheet.getRange('D16:E16'); 
    var ranges = [range,range2,range3]; 
    for (var j = 0; j<3; j++){ 
    ranges[j].protect().removeEditor('[email protected]'); 
    } 
} 


function myFunction2(){ 
//remove protections 
var ss = SpreadsheetApp.getActive(); 
var ss2= ss.getSheetByName('Spray Template'); 
var protections = ss2.getProtections(SpreadsheetApp.ProtectionType.RANGE); 
f 
or (var i = 0; i < protections.length; i++) { 
    var protection = protections[i]; 

protection.addEditor('[email protected]'); 
SpreadsheetApp.flush(); 
protection.remove(); 
} 
} 

function test() { 
    myFunction2(); 
    functionThatChangesRange(); 
    myFunction(); 
} 

回答

0

我想象,如果沒有編輯/訪問這些受保護的範圍,其他人也沒有權限修改保護自己(甚至通過腳本)。

這是因爲腳本運行它(即腳本人的帳戶下運行)的用戶將繼承其權限。

很顯然,你不能同時保護範圍,也允許任何人改變保護 - 這會破壞整個目的!

0

只見它建議其他地方運行「onedit」在文檔中留下一個細胞不受保護和設置的腳本。無論何時用戶更改該單元格的值,腳本都應該運行。

相關問題