Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 简单的GoogleSheets脚本现在速度慢且不可靠_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 简单的GoogleSheets脚本现在速度慢且不可靠

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

我编写了以下脚本,将一个菜单项和几个自定义排序和颜色函数添加到我的一个Google电子表格中。电子表格只有大约40行10列。该脚本过去运行时间很短,但现在运行三个主要功能中的一个大约需要25秒。此外,脚本完成后,在刷新浏览器之前,我不会看到排序和行着色的结果。有人能告诉我发生什么事的正确方向吗

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!谢谢!!!!今晚我将试一试。我非常感谢你提供的所有帮助和建议!希望你有一个美好的一天!!!!!!