Google Sheets/Javascript->;循环遍历数组并设置单元格的值
我是编程新手,我有一个如此简单的问题,但我很难找到答案。我想从A1开始动态覆盖单元格,直到数组的长度。这是我正在努力解决的第二个for循环。该范围的(“A”+ii)组合看起来不“专业”:-) 谢谢你的帮助Google Sheets/Javascript->;循环遍历数组并设置单元格的值,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我是编程新手,我有一个如此简单的问题,但我很难找到答案。我想从A1开始动态覆盖单元格,直到数组的长度。这是我正在努力解决的第二个for循环。该范围的(“A”+ii)组合看起来不“专业”:-) 谢谢你的帮助 function selectmyagency() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var agencynames = ss.getRange("B8:B42").getValues(); var myagency
function selectmyagency() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var agencynames = ss.getRange("B8:B42").getValues();
var myagency = ss.getRange("C3").getValue();
var arrayLength = agencynames.length;
for (var i = 0; i < arrayLength; i++) {
if(agencynames[i] == myagency){
//doNothing
} else {
agencynames[i] = ".";
}//endif
}//endfor
//overwrite Cell in Spreadsheet
for (var ii = 0; ii < agencynames.length; ii++) {
SpreadsheetApp.getActiveSheet().getRange("A"+ii).setValue(agencynames[ii]);
//SpreadsheetApp.getActiveSheet().getRange("A9").setValue(agencynames[ii]);
//SpreadsheetApp.getActiveSheet().getRange("A10").setValue(agencynames[ii]);
}
}//endfunction
功能选择MyAgency(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var agencynames=ss.getRange(“B8:B42”).getValues();
var myagency=ss.getRange(“C3”).getValue();
var arrayLength=agencynames.length;
对于(变量i=0;i
您可以通过如下批处理操作完成此操作:ss.getRange(“B8:B42”).setValues(agencynames)代码>
修改agencynames
数组后执行此操作,这将设置该范围的所有值以匹配您的数组,只要数组和范围大小相同。当您可以使用批处理操作时,为了性能和可读性,通常不鼓励在循环中调用服务
有关更多信息,请参阅
编辑:修改后的代码:
function selectmyagency() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var agencynames = ss.getRange("B8:B42").getValues();
var myagency = ss.getRange("C3").getValue();
var arrayLength = agencynames.length;
for (var i = 0; i < arrayLength; i++) {
if(agencynames[i] == myagency){
//doNothing
} else {
agencynames[i] = ".";
}//endif
}//endfor
//overwrite Cell in Spreadsheet
ss.getRange("B8:B42").setValues(agencynames);
}//endfunction
功能选择MyAgency(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var agencynames=ss.getRange(“B8:B42”).getValues();
var myagency=ss.getRange(“C3”).getValue();
var arrayLength=agencynames.length;
对于(变量i=0;i
还有几点建议:
- 如果只修改元素本身而不修改数组,则无需设置数组长度变量
- 当您使用
getValues()
时,您得到的是数组而不是值数组,即使它只是一列。例如,[[“值”]、[“值”]、[“值”]]
而不是[“值”、“值”]
。设置或获取此数组的值时,您可能希望使用agencynames[i][0]
而不是agencynames[i]
嘿,安德烈,你遇到的问题是它不起作用,还是看起来不对劲?如果您只想将整个代理名称
范围清空,我可以提供一个更有效的答案。