当前位置: 首页 > 知识库问答 >
问题:

GoogleSheets脚本-在特定工作表上运行更简洁的代码

陆高峰
2023-03-14

我只希望脚本在“Trip 1”到“Trip 3”的工作表上运行。

这是我正在使用的脚本:

SORT_DATA_RANGE = "A4:K";
SORT_ORDER = [
{column: 2, ascending: false},  // 3 = column number, sorting by descending order
{column: 6, ascending: true}, // 1 = column number, sort by ascending order 
{column: 7, ascending: true},
{column: 8, ascending: true},
];

function onEdit(event){
   var editedRange= event.range;
   var editedSheet= editedRange.getSheet()

  if(editedRange.getColumn() == 2 && editedSheet.getName() == "Trip 1")
  { 
   var range = editedSheet.getRange(SORT_DATA_RANGE);
    range.sort(SORT_ORDER);
  }

  else if(editedRange.getColumn() == 2 && editedSheet.getName() == "Trip 2")
  { 
    var range = editedSheet.getRange(SORT_DATA_RANGE);
    range.sort(SORT_ORDER);
  }

  else if(editedRange.getColumn() == 2 && editedSheet.getName() == "Trip 3")
  {  
    var range = editedSheet.getRange(SORT_DATA_RANGE);
    range.sort(SORT_ORDER);
  }

}

共有2个答案

公西英叡
2023-03-14

尝试

function onEdit(event){
   var editedRange= event.range;
   var editedSheet= editedRange.getSheet()    
   if(editedRange.getColumn() == 2 && (editedSheet.getName() == "Trip 1" || "Trip 2" || "Trip 3")){ 
   var range = editedSheet.getRange(SORT_DATA_RANGE);
   range.sort(SORT_ORDER);
  }    
}
谭泉
2023-03-14

您可以定义一个常量-一个数组,其中包含要应用排序的工作表的名称SORT_ON_SHEETS=['Trip 1','Trip 2','Trip 3']

在onEdit()函数中,检查此数组是否包含发生事件的工作表的名称

function onEdit(event){
   var editedRange= event.range;
   var editedSheet= editedRange.getSheet()

  if (editedRange.getColumn() == 2 && SORT_ON_SHEETS.includes(editedSheet.getName())){
    var range = editedSheet.getRange(SORT_DATA_RANGE);
    range.sort(SORT_ORDER);
  }
} 
 类似资料:
  • 我是新来的谷歌工作表脚本和卡住试图做以下事情。我有2列:C包含开始时间码,D包含结束时间码。第三列(F)包含从开始时间码和结束时间码产生的电影提示的长度。由于时间码来自脚本,因此包含结果的单元格不能导出为其他格式。因此,我试图创建第四列,将列F的结果打印为值。我设法写了一个小脚本,可以做到这一点。它看起来像这样: 问题是,当我编辑C或D中的任何时间码时,它不会自动执行。 所以我试了一下: 它没有给

  • 问题内容: 我有一个 包含特定日期和时间 的 文本文件。 我希望能够 在该文件中指定的时间运行脚本。 您将如何实现?创建另一个在后台运行的脚本(有点像守护进程),并每秒检查当前时间是否与文件中的时间匹配?还有另一种方法吗?该机是 linux服务器,Debian wheezy。提前致谢 问题答案: 请看以下内容: 该代码行在特定时间执行“ ls -l”。这是在特定时间执行某些操作(在我的示例中为命令

  • 我想使“onedit”仅在值已更改的工作表上工作。 [sheet1]如果在第7列中输入值,则需要在[sheet1]第6列中写入时间 或[sheet2]如果在第7列中输入值,则希望在[sheet2]第6列中写入时间。 不要在[sheet5]上工作。 但是时间也出现在我不想要的[表2]和[表3]中。 请帮帮我。

  • 问题内容: 我想编写一个简单的python脚本来完成特定的工作。我花了一些时间从网站链接信息。 在正确的时间单击这些链接的最佳方法是什么?我是否需要计算当前电流与列表中的电流之间的时间间隔并睡眠一会儿? 我真的停留在这一点上,并欢迎任何可能有用的想法。 问题答案: 看一下Python的sched模块。

  • 我目前有一个正在工作的谷歌脚本,它在谷歌游泳池化学监测表中读取仪表板上的值。人们将提交一个表单,如果这些数字大于或小于一个设定的数字,它将发送一封带有特定消息的电子邮件。 这工作很好,但如果有多个数字是关闭的,我会收到多个电子邮件,这是恼人的。 然后使用email-mailapp.sendeMail(emailAddress,subject,Message1+Message2...); 但我觉得这

  • 我试图通过电子表格发送电子邮件。脚本从电子表格中的工作表中获取电子邮件和电子邮件正文。当此工作表是第一个工作表时,脚本工作正常。然而,出于我不想深入讨论的原因,我需要另一张表格作为第一张。我试过使用: var ss=电子表格应用程序。活跃起来。表(); var表=ss.getSheetByName('电子邮件'); 然而,当我这样做时,我得到了信息 TypeError:在对象工作表中找不到函数ge