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

如何将脚本应用于谷歌电子表格中的一个工作表

艾俊晖
2023-03-14

我有一个谷歌电子表格,有两张叫做罗宾和露西的表格。每次我向列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 } );
  }
}

这个剧本很棒,但我只想把它应用在第一张纸上,罗宾。第二个工作表中的数据,Lucy,是不一样的,所以我将创建另一个脚本为不同的范围,一旦我得到了这个问题的头脑。

我想我需要使用getSheetByName(“罗宾”),但我似乎无法让它工作。提前感谢

共有3个答案

公良阳波
2023-03-14

我还建议将这一行替换为:var tableRange="a2: I30";用这个:var tableRange=sheet.getDataRange();

随着范围的增长,getDataRange()返回的范围将进行调整以适应它。无需使用硬编码地址,使代码更加灵活

仅供参考:我在这里找到了一些有用的例子:

http://www.javascript-spreadsheet-programming.com

吴鸿彩
2023-03-14

onEdit接收的事件对象转发到处理所需工作表上事件的特定函数。

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.
}
狄承望
2023-03-14

您可以将整个函数置于如下条件下:

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 } );
  }
}
}

或者,如果条件为false,您也可以返回,如下所示

...
  var sheet = event.source.getActiveSheet();
  if(sheet.getName()!='Robin'){return}
...

这两种方法将以相同的方式工作。

 类似资料:
  • 可编辑链接-https://docs.google.com/spreadsheets/d/1vrzchTHVwwzc9wgFGmtc_zBsh27CEtE7KOyeNDuLwC0/edit?usp=sharing 发布至网页-https://docs.google.com/spreadsheets/d/e/2PACX-1vRaJd3YpKnemAneU47RI58m7cxQsYFdViFBxJPV

  • 我有以下脚本。 我有一个电子表格,有10个工作表和15个用户登录并修改它。 在特定列中插入activesheet中两天之间的天数,脚本比较第J列中的日期和今天,并在第F列中插入差值。 我不能使用定时触发器运行此脚本。我想为并发工作表每15分钟运行一次这个脚本。 只有在电子表格中只有一张工作表时,触发器才会定时运行。如果我有多张工作表,则触发器不会随时间运行。如果我将同一个触发器设置为OneEdit

  • 假设我有在在我的电子表格中,我想创建一个自定义的Google Apps脚本(例如。)返回url部分这个领域。我要怎么做才能让它起作用? 每当我创建一个像这样的自定义脚本 我得到的只是链接的描述,在这种情况下是“谷歌”。 有没有办法让它真正起作用?

  • B页中有图表,其中有源数据。我想以这样一种方式将图表导入到主电子表格B中,当图表在表格B中更改时,它也应该在主表格A中动态更改。 经过大量的研究,我能够找到以下内容: Importrange-只导入数据,而不是图表 复制图表本身并将其粘贴到主工作表A,但当图表在工作表B中动态变化时,它不会更改。 发布图表并将URL作为图像插入-如果主表A是google电子表格,则不起作用,但适用于google文档

  • 我正在查看以下文档:https://developers.google.com/apps-script/reference/mail/mail-app 我做错了什么? null

  • 通过SpreadsheetApp global,使用绑定到电子表格的应用程序脚本来影响工作表非常简单。但是,有一些功能,例如在工作表上获取/设置过滤器,只能从GoogleSheetsRESTAPI访问。 我见过一个例子,它使用应用程序脚本中的UrlFetchApp来调用谷歌工作表应用编程接口,但它的编写方式好像应用程序脚本实际上没有绑定到特定的电子表格。 当我试图从绑定到电子表格的应用程序脚本中调