2017-08-05 31 views
0

任何人都可以帮助我,这是关于谷歌床单自动排序脚本?实际上我并不熟悉脚本,但我想要做的是自动排序在我的表格范围上的列A上输入的日期。我发现了一个通用脚本,我在我的谷歌表单上试过,它实际上可以在同一张纸上进行手动编辑。 但是,我的表格范围内的值是来自另一张工作表的我的(索引,匹配)公式的结果,因此无论何时从另一工作表输入新值,它都不会自动进行排序。自动排序脚本在谷歌表onChange触发器

这里,我尝试了我的谷歌片的示例脚本:

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

任何人都可以指导我修改此脚本,请...

这里的链接来样谷歌片,我”米试图工作:

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

+0

它抛出什么错误? –

+0

自动排序只有在我手动编辑同一纸张(纸张1)上的列时才起作用,但是纸张1上的值是基于纸张2的公式的结果。 – marby

回答

0

尝试此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}); 
} 

看看这些APIs

+0

嗨Rajeev - 哦,非常感谢您的帮助我现在复制它,它确实有效,但是,似乎我必须点击运行才能使其工作。它是否应该是onEdit触发器? – marby

+0

是的,它应该是onEdit触发器的第二张,它会自动调用这两个函数。希望你能理解代码! –

+0

嗨Rajeev,再次感谢是的,我仍然在学习脚本。 – marby