For loop 优化GoogleApps脚本嵌套循环

For loop 优化GoogleApps脚本嵌套循环,for-loop,optimization,google-apps-script,For Loop,Optimization,Google Apps Script,有没有办法删除for循环或使其更有效 我的情况如下: 我有一个谷歌电子表格,它使用了以下谷歌应用程序脚本功能6次: var factor_r = []; var apr_r = SpreadsheetApp.getActive().getActiveSheet().getRange(apr).getValues(); var num_installments_r = SpreadsheetApp.getActive().getActiveSheet().getRange(num_in

有没有办法删除for循环或使其更有效

我的情况如下:

我有一个谷歌电子表格,它使用了以下谷歌应用程序脚本功能6次:

  var factor_r = [];
  var apr_r = SpreadsheetApp.getActive().getActiveSheet().getRange(apr).getValues();
  var num_installments_r = SpreadsheetApp.getActive().getActiveSheet().getRange(num_installments).getValues();
  for (var i = 0; i < apr_r.length; i++) {
    factor_r[i] = [];
    for (var j = 0; j < apr_r[i].length; j++) {
      var factor = 1;
      var apr_factor = 1.0 + apr_r[i][j];
      var time_fraction = 0.0;
      for(var k = 1; k < num_installments_r[0][j]; k++) {
        time_fraction = (15+30.5*k)/365;
        factor += 1/Math.pow(apr_factor, time_fraction);
      }
      factor_r[i][j] = factor;
    }
  }
  return factor_r;
};
var因子_r=[];
var apr_r=SpreadsheetApp.getActive().getActiveSheet().getRange(apr.getValues();
var num_installants_r=SpreadsheetApp.getActive().getActiveSheet().getRange(num_installants.getValues();
对于(变量i=0;i
apr
输入变量是一个24x90的范围矩阵,
num_installations
是一个24的数组。每次运行都需要几分钟,输入会影响其他单元格,这些单元格的公式也需要一些时间。总的来说,加载我的电子表格最多需要15-20分钟。这似乎不多,但我们需要与外界分享,并希望加以改进。我认为如果上面的代码可以优化,电子表格的总加载时间可以显著缩短

有什么办法吗

谢谢,,
Clara

您可以创建一个按钮,仅在需要时运行脚本。 要在图纸上创建按钮,请执行以下操作:

  • 转到插入->绘图
  • 绘制所需的形状并在其中插入一些文本
  • 一旦你把它放在你的工作表上->右键点击按钮(你会在右上角看到3个点)->分配脚本->分配你想要按钮像myFunction一样运行的函数

  • 如果脚本执行更多操作,我强烈建议隔离此函数,因此使用此按钮,您将运行此特定函数

    您真的需要每次打开工作表时都执行此操作吗?如果没有,你可以设置一个按钮来触发这个特定的、孤立的功能,这样你就可以节省5次跑步。嗨,凯西,谢谢你的回答。事实是,我根本不需要每次打开工作表都这样做。谷歌床单是自己做的。我试图找到一种仅用于“手动”计算的方法,但找不到。谢谢,我会尝试的。需要看看它将如何与不同的投入,但似乎是一个伟大的解决方案。谢谢谢谢,如果你觉得答案有用,请接受它,这样其他人也可以使用它