gpt4 book ai didi

google-apps-script - 提高 90 秒以上的 Google Apps 脚本的性能

转载 作者:行者123 更新时间:2023-12-02 04:49:12 24 4
gpt4 key购买 nike

我在谷歌应用程序中为电子表格构建一个脚本,它可以让我隐藏 H 列包含星号 (*) 的行。电子表格目前有 700 多行,当我运行脚本时,它需要大约 90 秒才能完成,我可以看到结果。没有人有时间做这些,所以我正在努力提高效率。

这就是拼凑在一起的代码的样子,我不知道如何重写它才能更快。我在这里得到了灵感; Hide Rows in a Google Spreadsheet based on first Character in a cell

/**
* Hides rows where H = Astrisk, Unhides where H != Astrisk
*/
function updateProgram() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Week 1-4");
var data = sheet.getRange('H:H').getValues();

//iterate over all rows
for(var i=0; i< data.length; i++){
//compare first character, if asterisk, then hide row
if(data[i][0].charAt(0) == '*'){
sheet.hideRows(i+1);
} else sheet.showRows(i+1);
}
}

它目前正在遍历所有行并在单个条件下执行函数并在每一行上执行一个函数。我已经考虑过这个可能的解决方案;

  • 如果 H = * ||行显示然后隐藏
  • 如果 H != * ||行被隐藏然后显示
  • 否则什么都不做

所以只有需要隐藏/显示的行才能得到它。

感谢您花时间阅读本文 - 如果您能帮助我,我们将不胜感激!

更新;

我想出了一种方法来对行进行分组,根据值显示和隐藏许多行。代码现在看起来像这样,运行需要 10 秒。

这是我的第一个自写代码,欢迎任何反馈!

function updateProgramWeek1to4() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("Week 1-4");
var row = s.getRange('G:G').getValues();
var maxRows = s.getMaxRows();

s.showRows(1, maxRows);

for(var i=0; i< row.length; i++){
if(row[i] == '0'){
s.hideRows(i+1, 11);
}
else if(row[i] == '1'){
s.hideRows(i+3, 9);
}
else if(row[i] == '2'){
s.hideRows(i+4, 8);
}
else if(row[i] == '3'){
s.hideRows(i+5, 7);
}
else if(row[i] == '4'){
s.hideRows(i+6, 6);
}
else if(row[i] == '5'){
s.hideRows(i+7, 5);
}
else if(row[i] == '6'){
s.hideRows(i+8, 4);
}
else if(row[i] == '7'){
s.hideRows(i+9, 3);
}
else if(row[i] == '8'){
s.hideRows(i+10, 2);
}
else if(row[i] == '9'){
s.hideRows(i+11, 1);
}
else if(row[i] == '10'){
s.hideRows(i+12);
}
else if(row[i] == '11'){
s.hideRows(i+1);
}
}
}

最佳答案

您可以通过使用 sheet.hideRows/showRows 中的第二个参数让它更快,它告诉它要处理多少。您需要更改循环并记住有多少行具有相同的状态。当状态改变时,你批量显示/隐藏。

关于google-apps-script - 提高 90 秒以上的 Google Apps 脚本的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com