保护列 F 为时间戳的行
Protecting a row in which column F is a to timestamp
如何在 Google sheet 中输入数据后锁定或保护行。 F列是一个“时间戳”,它一直是空白的。当 F 不是空白时,我需要保护行
第二行有错误:
TypeError: Cannot read property 'range' of undefined
function onEdit() {
var sh = e.range.getSheet();
if (sh.getName() != 'TheNameOfTheSheetYouWantThisToWorkIn') return;//change to whatever sheet your using
if (e.range.columnStart == 6 && !e.range.isBlank()) {
sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).protect();
}
}
我相信你的目标如下。
- 从
How to lock or protect a row after data entry or input in Google sheet. Column F is a "Timestamp" and it is a blank all time.
开始,我猜你想 运行 当一个值被输入到“F”列的单元格时脚本。
- 您想保护“F”列中包含已编辑单元格的行。
修改点:
- 关于
"TypeError: Cannot read property 'range' of undefined
的错误,在这种情况下,您的脚本没有声明e
。我认为这就是您遇到问题的原因。
- 在这种情况下,为了运行脚本作为所有者,请使用可安装的 OnEdit 触发器。为此,需要将函数名称从
onEdit
重命名为其他名称。因为,当函数 onEdit
作为可安装的 OnEdit 触发器安装时,编辑单元格时,脚本是 运行 2 次。
当这反映到您的脚本中时,它将变成如下。
修改后的脚本:
请将以下脚本复制并粘贴到 Google Spreadsheet 和 please install the OnEdit trigger as the installable trigger 的脚本编辑器中。当您要运行此脚本时,请编辑sheetTheNameOfTheSheetYouWantThisToWorkIn
的“F”列单元格。这样,OnEdit 触发器就是 运行 并且脚本也是 运行.
function installedOnEdit(e) {
var sh = e.range.getSheet();
if (sh.getName() != 'TheNameOfTheSheetYouWantThisToWorkIn') return;
if (e.range.columnStart == 6 && !e.range.isBlank()) {
var protect = sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).protect();
protect.addEditor(Session.getEffectiveUser()).removeEditors(protect.getEditors());
if (protect.canDomainEdit()) {
protect.setDomainEdit(false);
}
}
}
注:
- 如果在脚本编辑器中直接运行
installedOnEdit
的函数,会出现Cannot read property 'range' of undefined
这样的错误。所以,请注意这一点。当您使用此脚本时,请编辑 sheet TheNameOfTheSheetYouWantThisToWorkIn
. 的“F”列单元格
- 当行受到保护时,只有所有者可以编辑该行。其他用户无法编辑该行。
参考文献:
如何在 Google sheet 中输入数据后锁定或保护行。 F列是一个“时间戳”,它一直是空白的。当 F 不是空白时,我需要保护行
第二行有错误:
TypeError: Cannot read property 'range' of undefined
function onEdit() {
var sh = e.range.getSheet();
if (sh.getName() != 'TheNameOfTheSheetYouWantThisToWorkIn') return;//change to whatever sheet your using
if (e.range.columnStart == 6 && !e.range.isBlank()) {
sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).protect();
}
}
我相信你的目标如下。
- 从
How to lock or protect a row after data entry or input in Google sheet. Column F is a "Timestamp" and it is a blank all time.
开始,我猜你想 运行 当一个值被输入到“F”列的单元格时脚本。 - 您想保护“F”列中包含已编辑单元格的行。
修改点:
- 关于
"TypeError: Cannot read property 'range' of undefined
的错误,在这种情况下,您的脚本没有声明e
。我认为这就是您遇到问题的原因。 - 在这种情况下,为了运行脚本作为所有者,请使用可安装的 OnEdit 触发器。为此,需要将函数名称从
onEdit
重命名为其他名称。因为,当函数onEdit
作为可安装的 OnEdit 触发器安装时,编辑单元格时,脚本是 运行 2 次。
当这反映到您的脚本中时,它将变成如下。
修改后的脚本:
请将以下脚本复制并粘贴到 Google Spreadsheet 和 please install the OnEdit trigger as the installable trigger 的脚本编辑器中。当您要运行此脚本时,请编辑sheetTheNameOfTheSheetYouWantThisToWorkIn
的“F”列单元格。这样,OnEdit 触发器就是 运行 并且脚本也是 运行.
function installedOnEdit(e) {
var sh = e.range.getSheet();
if (sh.getName() != 'TheNameOfTheSheetYouWantThisToWorkIn') return;
if (e.range.columnStart == 6 && !e.range.isBlank()) {
var protect = sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).protect();
protect.addEditor(Session.getEffectiveUser()).removeEditors(protect.getEditors());
if (protect.canDomainEdit()) {
protect.setDomainEdit(false);
}
}
}
注:
- 如果在脚本编辑器中直接运行
installedOnEdit
的函数,会出现Cannot read property 'range' of undefined
这样的错误。所以,请注意这一点。当您使用此脚本时,请编辑 sheetTheNameOfTheSheetYouWantThisToWorkIn
. 的“F”列单元格
- 当行受到保护时,只有所有者可以编辑该行。其他用户无法编辑该行。