如何解决在所有行上迭代应用脚本功能 尝试调试的脚本参考
我有这个工作脚本:
function computeRows(){
for(var row=lastRow;row>1;row--){
if(ss.getRange('Q'+row).isBlank()){
var ss = SpreadsheetApp.openById('184C3kCDDv2sCElQB-INIyzTvmx8oNDXF0xqO7AH7xs8');
var lastRow = ss.getLastRow();
var currentRow = ss.getActiveSelection().getRow();
var phone = 'E'+lastRow;
ss.getRange('S'+lastRow).setValue('request');
ss.getRange('W'+lastRow).setFormula('A'+lastRow); // ('Now()');
ss.getRange('X'+lastRow).setFormula('CONCATENATE(C'+lastRow+'&" "&D'+lastRow+')');
ss.getRange('Y'+lastRow).setFormula('CONCATENATE(F'+lastRow+'&"\n"&G'+lastRow+'&" "&H'+lastRow+')')
ss.getRange('Z'+lastRow).setFormula('CONCATENATE("("&LEFT('+phone+',3)&") "&MID('+phone+',4,3)&"-"&RIGHT('+phone+',4))');
ss.getRange('AA'+lastRow).setFormula('B'+lastRow);
var UNIQUEID = ss.getRange('Q'+lastRow);
UNIQUEID.setValue('=DEC2HEX(RANDBETWEEN(0,4294967295),8)');
SpreadsheetApp.flush();
UNIQUEID.copyTo(UNIQUEID,{contentsOnly:true});
}
}
}
我需要它遍历表中的所有行,而不仅仅是最后一行。我已经尝试过lastrow
和row
的各种组合,但是让我感到困惑。
解决方法
尝试调试的脚本
function computeRows(){
var lastRow = ss.getLastRow(); // Moved this outside of for loop
for(var row=lastRow;row>1;row--){
if(ss.getRange('Q'+row).isBlank()){
var ss = SpreadsheetApp.openById('184C3kCDDv2sCElQB-INIyzTvmx8oNDXF0xqO7AH7xs8');
// var currentRow = ss.getActiveSelection().getRow(); // This is not referenced again
var phone = 'E'+row;
ss.getRange('S'+row).setValue('request');
ss.getRange('W'+row).setFormula('A'+row); // ('Now()');
ss.getRange('X'+row).setFormula('CONCATENATE(C'+row+'&" "&D'+row+')');
ss.getRange('Y'+row).setFormula('CONCATENATE(F'+row+'&"\n"&G'+row+'&" "&H'+row+')')
ss.getRange('Z'+row).setFormula('CONCATENATE("("&LEFT('+phone+',3)&") "&MID('+phone+',4,3)&"-"&RIGHT('+phone+',4))');
ss.getRange('AA'+row).setFormula('B'+row);
var UNIQUEID = ss.getRange('Q'+row);
UNIQUEID.setValue('=DEC2HEX(RANDBETWEEN(0,4294967295),8)');
SpreadsheetApp.flush();
UNIQUEID.copyTo(UNIQUEID,{contentsOnly:true});
}
}
}
- 在for循环中,我将
lastRow
的所有实例替换为row
。在for循环中,更改每次迭代的值为row
,var row=lastRow
将其设置为最后一行的编号。然后在您的循环中,例如:
ss.getRange('S'+lastRow)
每次都将调用相同的最后一行。因此,您需要将其更改为:
ss.getRange('S'+row)
- 我将
lastRow
的初始化移到了for循环之外。如果要为循环设置最大值,则只需设置一次即可。
参考
- MDN for loop-我建议也许尝试一些循环示例,以了解循环的工作方式。如果您已经知道这一点,我深表歉意,但是通过代码,您似乎并不了解。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。