簡體   English   中英

Google 表格 - 允許用戶在受保護范圍內運行腳本

[英]Google Sheets - Allow Users to run scripts on a protected range

我是 Apps Script 的新手,並且一直在放慢自學速度。 我搜索了 Stack Over Flow 並發現了類似的問題,並嘗試使用找到的信息解決問題,但到目前為止沒有成功。 希望這里有人可以給新手一些指導。

我有一個與其他用戶共享的電子表格。 我試圖保護一些帶有公式的范圍。 我編寫了一個腳本,可以在受保護范圍內更改論壇。 它在我的帳戶下完美運行,但共享用戶無法運行該腳本,因為他們“沒有權限”。

我試圖編寫一些代碼來嘗試授予臨時訪問權限以編輯受保護的范圍。 我的想法是具有三種不同的功能。 第一個函數刪除保護。 第二個函數對現在不受保護的范圍執行更改。 然后第三個函數再次保護范圍。 下面的代碼在我的帳戶下完美運行。 但是,當以共享用戶身份登錄時,它會發出警報,提示“您無權執行..”

有人可以告訴我哪里出錯並指出正確的方向嗎?

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_here@gmail.com');
  }
}


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_here@gmail.com');
SpreadsheetApp.flush();
protection.remove();   
 }
}

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

我想如果沒有編輯/訪問這些受保護范圍的權限,其他人也將缺乏編輯保護本身的權限(即使通過腳本)。

這是因為腳本從運行它的用戶那里繼承了它的權限(即腳本在那個人的帳戶下運行)。

顯然,你不能既保護一個范圍,又允許任何人改變保護——這將破壞整個目的!

我在其他地方看到有人建議讓一個單元格不受保護,並在運行“onedit”的文檔中設置一個腳本。 每當用戶更改該單元格的值時,腳本就應該運行。

可以使用onEdit來運行腳本或可安裝的觸發器。 但是,我還沒有確定可以從自定義菜單或按鈕調用腳本並成功編輯受保護范圍的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM