Google apps script 简单的GoogleSheets脚本现在速度慢且不可靠
我编写了以下脚本,将一个菜单项和几个自定义排序和颜色函数添加到我的一个Google电子表格中。电子表格只有大约40行10列。该脚本过去运行时间很短,但现在运行三个主要功能中的一个大约需要25秒。此外,脚本完成后,在刷新浏览器之前,我不会看到排序和行着色的结果。有人能告诉我发生什么事的正确方向吗Google apps script 简单的GoogleSheets脚本现在速度慢且不可靠,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我编写了以下脚本,将一个菜单项和几个自定义排序和颜色函数添加到我的一个Google电子表格中。电子表格只有大约40行10列。该脚本过去运行时间很短,但现在运行三个主要功能中的一个大约需要25秒。此外,脚本完成后,在刷新浏览器之前,我不会看到排序和行着色的结果。有人能告诉我发生什么事的正确方向吗 function onOpen() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var menuEntries = [ {name: &qu
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [ {name: "Pastoral Care", functionName: "customSort1"},{name: "Read Aloud Prayers", functionName: "customSort2"},{name: "Priests' Notes", functionName: "customSort3"} ];
ss.addMenu("Layout", menuEntries);
}
function customSort1() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.sort(2, true).sort(3, true).sort(1, true);
var endRow = sheet.getLastRow();
var endColumn = sheet.getLastColumn();
for (var r = 2; r <= endRow; r++) {
colorRowPastoralCare(r, endColumn);
}
}
function customSort2() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.sort(2, true).sort(3, true).sort(5, false);
var endRow = sheet.getLastRow();
var endColumn = sheet.getLastColumn();
for (var r = 2; r <= endRow; r++) {
colorRowReadAloudPrayers(r, endColumn);
}
}
function customSort3() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.sort(2, true).sort(3, true).sort(6, false);
var endRow = sheet.getLastRow();
var endColumn = sheet.getLastColumn();
for (var r = 2; r <= endRow; r++) {
colorRowPriestsNotes(r, endColumn);
}
}
function colorRowPastoralCare(r, endColumn){
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange(r, 1, 1, endColumn);
var data = dataRange.getValues();
var row = data[0];
if(row[0] === ""){
dataRange.setBackgroundRGB(255, 255, 255);
}else if(row[0] === "1 Acute"){
dataRange.setBackgroundRGB(255, 211, 216);
}else if(row[0] === "2 Recovering"){
dataRange.setBackgroundRGB(255, 236, 218);
}else if(row[0] === "3 Long-term"){
dataRange.setBackgroundRGB(255, 254, 220);
}else if(row[0] === "4 Prayer only"){
dataRange.setBackgroundRGB(213, 255, 227);
}else if(row[0] === "5 Homebound"){
dataRange.setBackgroundRGB(215, 238, 253);
}
SpreadsheetApp.flush();
}
function colorRowReadAloudPrayers(r, endColumn){
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange(r, 1, 1, endColumn);
var data = dataRange.getValues();
var row = data[0];
if(row[4] === ""){
dataRange.setBackgroundRGB(255, 255, 255);
}else if(row[4] === "Y"){
dataRange.setBackgroundRGB(213, 255, 227);
}else if(row[4] === "N"){
dataRange.setBackgroundRGB(215, 238, 253);
}
SpreadsheetApp.flush();
}
function colorRowPriestsNotes(r, endColumn){
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange(r, 1, 1, endColumn);
var data = dataRange.getValues();
var row = data[0];
if(row[5] === ""){
dataRange.setBackgroundRGB(255, 255, 255);
}else if(row[5] === "Y"){
dataRange.setBackgroundRGB(213, 255, 227);
}else if(row[5] === "N"){
dataRange.setBackgroundRGB(215, 238, 253);
}
SpreadsheetApp.flush();
}
函数onOpen(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var menuEntries=[{name:“牧师关怀”,functionName:“customSort1”},{name:“朗读祈祷”,functionName:“customSort2”},{name:“牧师笔记”,functionName:“customSort3”}];
ss.添加菜单(“布局”,菜单);
}
函数customSort1(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);
sheet.sort(2,true)、sort(3,true)、sort(1,true);
var endRow=sheet.getLastRow();
var endColumn=sheet.getLastColumn();
对于(var r=2;r我猜你想做这两种排序中的一种。我猜你真的想要第一种。升序或降序的选择可能与我的有所不同
function sorttest1() {
const ss=SpreadsheetApp.getActive();
const sh=ss.getActiveSheet();
const rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
rg.sort([{column:1,ascending:true},{column:2,ascending:false},{column:3,ascending:false}]);
}
function sorttest2() {
const ss=SpreadsheetApp.getActive();
const sh=ss.getActiveSheet();
const rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
rg.sort({column:1,ascending:true}).sort({column:2,ascending:false}).sort({column:3,ascending:false});
}
你做了什么来调试它?检查视图执行情况。你可以使用Logger.log并在那里查看结果。哪个函数速度慢?旁注:没有必要将
SpreadsheetApp.flush()
作为“main functions”(即从自定义菜单调用的函数)的最后一个函数语句谢谢@Cooper和@Rubén!我去了查看>执行,但所有条目都报告“没有可用于此执行的日志”。我也删除了对SpreadsheetApp.flush()的调用
。我对谷歌环境还很陌生,所以我恐怕被难倒了。但是,我再次感谢你们两位花时间回应!那么我想你们只需在调试模式下一步完成程序,并找出发生了什么。这张表。sort(2,true)。sort(3,true)。sort(1,true);
不正确我得到错误:异常:参数(编号,(类))与SpreadsheetApp.Range.sort的方法签名不匹配。(文件“ag2”)
我相信你错过了描述中的sortSpecObj哇!@Cooper!谢谢!!!!今晚我将试一试。我非常感谢你提供的所有帮助和建议!希望你有一个美好的一天!!!!!!