简体   繁体   English

在Google Sheets上自动排序脚本onChange触发器

[英]Auto sort script on google sheets onChange trigger

Can anyone help me please, it's regarding auto sort script for google sheets? 谁能帮我,这是关于Google表格的自动排序脚本? I'm not familiar with script actually, but what I'm trying to do is to auto sort the dates entered on column A on my table range. 我实际上并不熟悉脚本,但是我想做的是对表格范围内A列上输入的日期进行自动排序。 I found a generic script below which I tried on my google sheets and it actually works on manual edit on the same sheet. 我在下面找到了通用脚本,在Google表格上尝试了该脚本,它实际上可以在同一张表格上进行手动编辑。 However, the values on my table range are results of my (Index,Match) formula from another sheet so whenever a new value is entered from another sheet it will not automatically get sorted. 但是,表范围内的值是另一张工作表的(Index,Match)公式的结果,因此,每当从另一张工作表输入新值时,它都不会自动进行排序。

Here's the sample script which I tried on my google sheets: 这是我在Google表格上尝试过的示例脚本:

function onEdit(event){
  var sheet = event.source.getActiveSheet();

  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 1;
  var tableRange = "A2:J61"; // What to sort.
  if(editedCell.getColumn() == columnToSortBy){   
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy, ascending: true});
  }
}

Can anyone guide me to modify this script, please... 谁能指导我修改此脚本,请...

Here's the link to sample google sheet which I'm trying to work on: 这是我要尝试的示例Google工作表的链接:

https://docs.google.com/a/alarmpromotions.org/spreadsheets/d/1IHPwNpAklt_5R6OyxTHMxMbXKkT4WsPBk20saUPbxgw/edit?usp=sharing https://docs.google.com/a/alarmpromotions.org/spreadsheets/d/1IHPwNpAklt_5R6OyxTHMxMbXKkT4WsPBk20saUPbxgw/edit?usp=sharing

Try this onEdit with the auxiliary function to update first sheet when this is triggered for the second sheet. 当第二张纸被触发时,尝试使用带有辅助功能的onEdit来更新第一张纸。

function onEdit(){
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 1;
  var tableRange = "A2:J61"; // What to sort.

  if(editedCell.getColumn() == columnToSortBy){   
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy, ascending: true});

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    if(ss.getSheets()[1] == sheet ){
       sortFirstSheet();
    }
  }
}


function sortFirstSheet(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);

  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("A2:J61");
  range.sort( { column : columnToSortBy, ascending: true});
}

Take a look at these APIs 看看这些API

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM