Javascript 谷歌应用程序脚本写入电子表格栏落后一步
奇怪的问题。我正在用谷歌应用程序脚本编写一个脚本。脚本的一部分从1个范围/数组(“a”)中获取值,在第二个范围/数组(“b”)中查找值,然后将第三个范围/数组(“c”)中的相应值写入电子表格的F列。它基本上是一个vlookup 当我检查代码、调试器等时,一切看起来都很好。并且输出到工作表中看起来也不错。除了运行程序外,工作表中缺少最后一个值。当我使用调试器缓慢运行程序时,似乎出于某种原因,在下一轮循环完成之前,不会将值打印到F列。基于当时变量的值,这实际上没有任何意义。例如,当i=4时,它应该打印到F6。但它会将上一个值打印到F5。所有正确的值最终都在正确的位置(最后一个除外),但发生这种情况时,计时似乎是关闭的,这就是我丢失最后一个值的原因 注意:我试着看看是否只是一个时间延迟,但事实似乎并非如此。我重新加载了电子表格,等了一会儿,等等。它只是落后了一步 代码如下,我认为相当简单。任何帮助都将不胜感激Javascript 谷歌应用程序脚本写入电子表格栏落后一步,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,奇怪的问题。我正在用谷歌应用程序脚本编写一个脚本。脚本的一部分从1个范围/数组(“a”)中获取值,在第二个范围/数组(“b”)中查找值,然后将第三个范围/数组(“c”)中的相应值写入电子表格的F列。它基本上是一个vlookup 当我检查代码、调试器等时,一切看起来都很好。并且输出到工作表中看起来也不错。除了运行程序外,工作表中缺少最后一个值。当我使用调试器缓慢运行程序时,似乎出于某种原因,在下一轮循环完成之前,不会将值打印到F列。基于当时变量的值,这实际上没有任何意义。例如,当i=4时,它应该打
loop1:
for(i=0;i<a.length;i++){
loop2:
for(j=0;j<b.length;j++){
if(a[i].valueOf() == b[j].valueOf()){
sheet.getRange("F"+(i+2)).setValue(c[j]);
break loop2;
}
}
}
loop1:
对于(i=0;i我尝试用以下代码重新创建您的情况:
function myFunction() {
var a = ['one','6','match'];
var b = ['two','Vee','match'];
var c = ['three','Vee','match'];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
loop1:
for(i=0;i<a.length;i++){
loop2:
for(j=0;j<b.length;j++){
//Logger.log('a[i].valueOf() ' + a[i])
//Logger.log('b[j].valueOf() ' + b[j])
Logger.log(a[i].valueOf() == b[j].valueOf());
if (a[i].valueOf() == b[j].valueOf()) {
Logger.log('they match!');
Logger.log('i: ' + i);
Logger.log('j: ' + j);
sh.getRange("F"+(i+2)).setValue(c[j]);
break loop2;
}
}
}
};
我试图用以下代码重新创建您的情况:
function myFunction() {
var a = ['one','6','match'];
var b = ['two','Vee','match'];
var c = ['three','Vee','match'];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
loop1:
for(i=0;i<a.length;i++){
loop2:
for(j=0;j<b.length;j++){
//Logger.log('a[i].valueOf() ' + a[i])
//Logger.log('b[j].valueOf() ' + b[j])
Logger.log(a[i].valueOf() == b[j].valueOf());
if (a[i].valueOf() == b[j].valueOf()) {
Logger.log('they match!');
Logger.log('i: ' + i);
Logger.log('j: ' + j);
sh.getRange("F"+(i+2)).setValue(c[j]);
break loop2;
}
}
}
};