并非真正意义上的答案
只是对代码中逻辑的一点放大信息。
function onEdit(event) {
var sheet = SpreadsheetApp.getActiveSheet();
var editedCell = sheet.getActiveCell();
if (editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3, columnToCheck4, columnToCheck5, columnToCheck6, columnToCheck7, columnToCheck8 && sheet.getName() == sheetToSort) {
sortOpenCases();
}
}
我不明白 if 语句中的条件发生了什么,所以我写了一个小程序来为它构建一个真值表。我在脚本编辑器中运行它,我相信这部分
if (editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3, columnToCheck4, columnToCheck5, columnToCheck6, columnToCheck7, columnToCheck8
总是正确的。然后我修改了如下代码:
function do_onEdit(e)
{
dispStatus('Do On Edit', 'At the beginning of do_onEdit',400,200);
var sheetToSort = "Sheet2"; // name of sheet to be sorted
var columnToCheck1 = 2; // column to check for edits
var columnToCheck2 = 3; // second column to be checked for edits
var columnToCheck3 = 6;
var columnToCheck4 = 10;
var columnToCheck5 = 11;
var columnToCheck6 = 12;
var columnToCheck7 = 13;
var columnToCheck8 = 14;
var columnToSortBy = 16; // column to sort by; A = 1, B = 2, etc.
var rangeToSort = "A1:P150"; // range of values to be sorted
var sheet = SpreadsheetApp.getActiveSheet();
var editedCell = sheet.getActiveCell();
if (editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3, columnToCheck4, columnToCheck5, columnToCheck6, columnToCheck7, columnToCheck8 && sheet.getName() == sheetToSort)
{
SpreadsheetApp.getUi().alert("I'm busy sorting don't bother me.");
}
}
在对每张工作表范围的各个列进行各种编辑之后,我不得不得出结论,唯一一次调用 sortOpenCases() 是在我更改为 Sheet2 的“sheetToSort”上进行编辑时。所以有效的 if 语句条件是:
function do_onEdit(e)
{
dispStatus('Do On Edit', 'At the beginning of do_onEdit',400,200);
var sheetToSort = "Sheet2"; // name of sheet to be sorted
var columnToCheck1 = 2; // column to check for edits
var columnToCheck2 = 3; // second column to be checked for edits
var columnToCheck3 = 6;
var columnToCheck4 = 10;
var columnToCheck5 = 11;
var columnToCheck6 = 12;
var columnToCheck7 = 13;
var columnToCheck8 = 14;
var columnToSortBy = 16; // column to sort by; A = 1, B = 2, etc.
var rangeToSort = "A1:P150"; // range of values to be sorted
var sheet = SpreadsheetApp.getActiveSheet();
var editedCell = sheet.getActiveCell();
if (sheet.getName() == sheetToSort)
{
SpreadsheetApp.getUi().alert("I'm busy sorting don't bother me.");
}
}
我使用以下代码在不同的页面和列上尝试了一系列不同的编辑:
function do_onEdit(e)
{
dispStatus('Do On Edit', 'At the beginning of do_onEdit',400,200);
var sheetToSort = "Sheet2"; // name of sheet to be sorted
var columnToCheck1 = 2; // column to check for edits
var columnToCheck2 = 3; // second column to be checked for edits
var columnToCheck3 = 6;
var columnToCheck4 = 10;
var columnToCheck5 = 11;
var columnToCheck6 = 12;
var columnToCheck7 = 13;
var columnToCheck8 = 14;
var columnToSortBy = 16; // column to sort by; A = 1, B = 2, etc.
var rangeToSort = "A1:P150"; // range of values to be sorted
var sheet = SpreadsheetApp.getActiveSheet();
var editedCell = sheet.getActiveCell();
if (editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3, columnToCheck4, columnToCheck5, columnToCheck6, columnToCheck7, columnToCheck8 && sheet.getName() == sheetToSort)
{
SpreadsheetApp.getUi().alert("I'm busy sorting don't bother me.");
}
}
因此,排序仅在您在“sheetToSort”上进行编辑时发生,并且它发生在“sheetToSort”的每一列上。欢迎您使用最后一个小 sn-p 并自己测试它,因为它实际上并没有调用 sortOpenCases();
@Harold - 我学到了很多关于如何设置触发器的知识。感谢您提供信息。