Multithreading 如何使用google应用程序脚本为google sheets创建简单的多线程
我有很多谷歌图表要更新,我想并行处理for循环 我在这个链接上看到了代码: 但这太复杂了,我不必这么做。我不需要对代码进行并行化并将数据取回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(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如果您专门针对该问题提出一个新问题会更好。我在该链接上发布了完整的解决方案: