Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Sheets/Javascript->;循环遍历数组并设置单元格的值_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Google Sheets/Javascript->;循环遍历数组并设置单元格的值

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

我是编程新手,我有一个如此简单的问题,但我很难找到答案。我想从A1开始动态覆盖单元格,直到数组的长度。这是我正在努力解决的第二个for循环。该范围的(“A”+ii)组合看起来不“专业”:-) 谢谢你的帮助

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]

嘿,安德烈,你遇到的问题是它不起作用,还是看起来不对劲?如果您只想将整个
代理名称
范围清空,我可以提供一个更有效的答案。