我在四张纸上都有一个“排行榜” /“记分板”,每当按总分(第2列)然后按总杀死数(第3列)进行更新时,我都需要进行自动排序。这些列在所有四张纸上都是相同的。
过去,当记分板仅限于一张纸时,我使用了一个非常简单的脚本,但此后我将其扩展为在同一文档的不同纸上具有前十名,前四名和前两名。 >
我遇到的问题是:当脚本更新一张纸时,另一张纸似乎完全停止工作。换句话说,脚本会中断。
能否请教我一些建议?我已经从该站点尝试了几种脚本,下面是我看到的一些基本脚本(但是脚本似乎坏了吗?)。
protect_from_forgery with: :null_session
理想情况下,工作时,工作表将按字面意思按“总分”列进行排序,而“总杀死数”则是进行排序的“决胜局”。
如果有人可以帮忙,我会提供一份工作表副本:
https://docs.google.com/spreadsheets/d/1a6XGv09TPt5Vnxqfcd1Xba3TGMis5OelGxlvzNDl5CY/edit?usp=sharing
答案 0 :(得分:0)
尝试类似这样的方法而不是您的脚本:
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = event.source.getActiveSheet().getName()
var editedCell = event.range.getSheet().getActiveCell();
if(sheet=="Sheet1"){
var columnToSortBy = 2;
var tableRange = "A3:C10"; //range to be sorted
if(editedCell.getColumn() == columnToSortBy){
var range = ss.getActiveSheet().getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}}
else if(sheet=="Sheet2"){
var columnToSortBy = 7;
var tableRange = "A3:C10"; //range to be sorted
if(editedCell.getColumn() == columnToSortBy){
var range = ss.getActiveSheet().getRange(tableRange);
range.sort( { column : columnToSortBy, ascending: true } );
}
else{return}
}}
答案 1 :(得分:0)
尝试一下:
function sortOnEdit(e) {
var sh=e.range.getSheet();
var name=sh.getName();
var incl=['MAIN EVENT','TOP TEN','TOP FOUR','TOP TWO'];
if(incl.indexOf(name)==-1) return;
sh.sort(3,false).sort(2,false);
}