我有一个谷歌电子表格,有两张名为Robin和Lucy的表格。 每次向A列添加一些数据时,我都会创建/发现/修改一个脚本来对工作表上的数据进行排序
function onEdit(event){
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 1;
var tableRange = "a2:I30";
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy } );
}
}
这个脚本效果很好,但我只想把它应用到第一张表Robin上。第二张表中的数据,露西,是不一样的,所以一旦我解决了这个问题,我将为那个创建另一个不同范围的脚本。
我想我需要使用getSheetByName(“Robin”),但我似乎无法让它工作。 提前致谢
答案 0 :(得分:5)
你可以把你的整个功能放在这样的条件下:
function onEdit(event){
var sheet = event.source.getActiveSheet();
if(sheet.getName()=='Robin'){
var editedCell = sheet.getActiveCell();
var columnToSortBy = 1;
var tableRange = "a2:I30";
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy } );
}
}
}
或者如果条件为假,你也可以返回
...
var sheet = event.source.getActiveSheet();
if(sheet.getName()!='Robin'){return}
...
两种方法的工作方式相同。
答案 1 :(得分:0)
我还建议更换这一行: var tableRange =“a2:I30”; 有了这个: var tableRange = sheet.getDataRange();
随着范围的增长,getDataRange()返回的范围将进行调整以适应它。无需使用硬编码地址,使代码更灵活
供参考: 我在这里找到了一些有用的例子:
答案 2 :(得分:0)
将onEdit
收到的event object转发到处理所需工作表上事件的特定功能。
function onEdit(event) {
var name = event.range.getSheet().getName();
switch (name) {
case "Robin":
updateRobin(event);
break;
case "Lucy":
updateLucy(event);
break;
}
}
function updateLucy(event) {
// Code designed to handle edits to the "Lucy" sheet.
}
function updateRobin(event) {
// Code designed to handle edits to the "Robin" sheet.
}