我是程序设计领域的初学者,我创建了一个脚本来遍历table1并根据其告知的时间段将值带入table2中。
该脚本正常运行,因为它在运行时非常慢。我想要一些帮助,以使他更快。
我搜索了数组,但我不明白如何应用此功能。
function teste() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página6");
var tabela = ss.getRange(3, 9, ss.getLastRow(), 1).getValues();
for(var l1 = 3 ; l1 <= tabela.length ; l1 ++ ){
var tab1 = ss.getRange(l1,8).getValue();
for( var l2 = 3 ; l2 <= tabela.length ; l2 ++ ){
var tab2 = ss.getRange(l2,12).getValue();
if (tab1 == tab2){
for( var col = 13 ; col < 17 ; col ++){
var coluna = ss.getRange(2, col).getValue();
if( ss.getRange(l1, 9).getValue() == ss.getRange(2, col).getValue()){
ss.getRange(l2, col).setValue(ss.getRange(l1, 10).getValue());
}
}
}
}
}
}
答案 0 :(得分:1)
Produto
到Mês 1
的每个Mês 4
都是相同的。Mês
的数量进行了排序。H2:J38
。L2:P11
。我可以像上面那样理解。如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
setValues()
将准备好的值放在工作表中。getValues()
检索到的值,并使用setValues()
将其放入工作表。function teste() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Página6");
var values = ss.getRange(3, 8, ss.getLastRow() - 2, 5).getValues();
// Value are parsed and put them to an object.
var obj = values.reduce(function(o, e) {
if (o[e[0]]) {
o[e[0]][e[1]] = e[2];
} else {
o[e[0]] = {};
o[e[0]][e[1]] = e[2];
}
return o;
}, {});
// Create an array for putting values to sheet.
var ar = values.filter(function(e) {return e[4]}).map(function(e) {return Object.keys(obj[e[4]]).map(function(f) {return obj[e[4]][f]})});
// Put the values.
ss.getRange(3, 13, ar.length, ar[0].length).setValues(ar);
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。
答案 1 :(得分:0)
阅读本文,它应根据项目的复杂性为您提供帮助。 https://developers.google.com/apps-script/guides/support/best-practices