Multithreading 如何使用google应用程序脚本为google sheets创建简单的多线程

Multithreading 如何使用google应用程序脚本为google sheets创建简单的多线程,multithreading,google-apps-script,google-sheets,parallel-processing,Multithreading,Google Apps Script,Google Sheets,Parallel Processing,我有很多谷歌图表要更新,我想并行处理for循环 我在这个链接上看到了代码: 但这太复杂了,我不必这么做。我不需要对代码进行并行化并将数据取回 for(i=0;i<nbChart;i++) { Vmax=rangeMax[i*6]; Vmin=rangeMinId[i*6]; id=rangeMinId[(i*6)+1]; var delta=(Vmax-Vmin)*0.1; Logger.log("Vmax="+Vmax+"Vmin="+Vmi

我有很多谷歌图表要更新,我想并行处理for循环

我在这个链接上看到了代码: 但这太复杂了,我不必这么做。我不需要对代码进行并行化并将数据取回

 for(i=0;i<nbChart;i++)
  {
    Vmax=rangeMax[i*6];
    Vmin=rangeMinId[i*6];
    id=rangeMinId[(i*6)+1];
    var delta=(Vmax-Vmin)*0.1;
    Logger.log("Vmax="+Vmax+"Vmin="+Vmin+"id="+id+"i="+i);
    var chart = sheet.getCharts()[id];
    if(chart.getType()!="COLUMN")
    {
      Vmin-=delta
      Vmax=Number(Vmax)+(delta*1.5)//Number() function to avoid Vmax becoming a string for no reason
    }
    Logger.log("Vmax="+Vmax+"Vmin="+Vmin+"id="+id+"i="+i);
     chart = chart.modify()
      .setOption('vAxes', {0: {textStyle: {fontSize: 10}, titleTextStyle: {fontSize : 8}, viewWindow: {min: Vmin, max:Vmax}}})//adpative vaxis for AREA and COMBO
      .build();
    sheet.updateChart(chart);
  }

for(i=0;i当前您正在调用的
sheet.getCharts()
每次循环运行都会大大增加执行时间。将函数调用放在循环外部,然后仅通过其ID在内部引用图表将减少循环中函数调用的数量:

var chart = sheet.getCharts();

for(i = 0; i < nbChart; i++) {
  Vmax = rangeMax[i * 6];
  Vmin = rangeMinId[i * 6];
  id = rangeMinId[(i * 6) + 1];
  var delta=(Vmax - Vmin) * 0.1;
  var currChart = chart[id];

  if(currChart.getType() != "COLUMN") {
    Vmin -= delta
    Vmax = Number(Vmax) + (delta * 1.5) //Number() function to avoid Vmax becoming a string for no reason
  }
  currChart = currChart.modify()
    .setOption('vAxes', {0: {textStyle: {fontSize: 10}, titleTextStyle: {fontSize : 8}, viewWindow: {min: Vmin, max:Vmax}}}) //adpative vaxis for AREA and COMBO
    .build();
  sheet.updateChart(currChart);
}
var chart=sheet.getCharts();
对于(i=0;i
另一种解决方案是,如果更新图表的顺序不重要,可以使用相同的循环结构编写第二个脚本,但使用不同的循环条件。
如果在两个不同的脚本中运行两个循环,一个运行(i=0;i
,第二个运行(i=1;i
,然后您可以设置两个可安装的触发器,以便同时或在同一操作上运行它们,这也将减少所有执行时间。

非常感谢,我将尝试这样做。我还将执行您的第二个解决方案以减少时间!我遵照您的建议,尝试创建一个函数,该函数将创建我的funct的两个实例ion,但该功能似乎根本没有运行。我应该创建其他帖子还是编辑此帖子?@LALLEMENT.E如果您专门针对该问题提出一个新问题会更好。我在该链接上发布了完整的解决方案: