簡體   English   中英

Google Sheet 在首次編輯后刪除編輯器

[英]Google Sheet Remove Editors After First Edit

我試圖在單元格中第一次輸入后鎖定 Google 表格中的單元格並使用以下代碼並獲得正確的結果。 但是,在此代碼中,第一次輸入后單元格被鎖定,但所有者和編輯者可以對鎖定的單元格進行進一步編輯,但是,我想為輸入數據的人鎖定單元格,即只有所有者才能進行編輯鎖定后到單元格在enter code here

function onEdit(e){
  let protection = e.range.protect();
  protection.removeEditors(protection.getEditors());
  if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
  }
  } 

上述任何幫助將不勝感激。以下是工作表的鏈接:

https://docs.google.com/spreadsheets/d/14qFZOKYUiQL4gKuLfdHPQwOgQ5LoY5P7KZyHN8ev-qY/edit?usp=sharing

如果您的腳本是由 OnEdit 的簡單觸發器運行的,我認為您的問題的原因可能是由於這個。 在這種情況下,請使用可安裝的 OnEdit 觸發器。

當您安裝可安裝的 OnEdit 觸發器時,請重命名函數名稱。 因為當onEdit函數被安裝為可安裝觸發器時,當一個單元格被編輯時, onEdit會以異步過程運行2次。 請注意這一點。

那么,下面的修改呢?

修改后的腳本:

function installedOnEdit(e) {
  let protection = e.range.protect();
  protection.removeEditors(protection.getEditors());
  if (protection.canDomainEdit()) {
    protection.setDomainEdit(false);
  }
}

function installTrigger() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  ScriptApp.newTrigger("installedOnEdit").forSpreadsheet(ss).onEdit().create();
}
  • 在這個腳本中,當installTrigger運行時,可安裝的 OnEdit 觸發器被安裝到函數installedOnEdit中。 這樣,當不是電子表格所有者的用戶編輯單元格時,該單元格就會受到保護。

參考:

添加:

關於您的以下新問題,

我也想為編輯器鎖定工作表,即只有所有者才能編輯工作表。

在這種情況下,請按如下方式修改上述腳本。

修改后的腳本:

function installedOnEdit(e) {
  let protection = e.range.getSheet().protect();
  protection.removeEditors(protection.getEditors());
  if (protection.canDomainEdit()) {
    protection.setDomainEdit(false);
  }
}
  • 順便說一句,在這個腳本中,它假設您是電子表格的所有者,並且您安裝了 OnEdit 觸發器。 因此,如果您想使用installTrigger安裝 OnEdit 觸發器,請由所有者運行腳本。 請注意這一點。

暫無
暫無

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

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