Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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
Javascript 如何将数组写入电子表格。“设置值抛出”;无法将数组转换为对象";_Javascript_Multidimensional Array_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何将数组写入电子表格。“设置值抛出”;无法将数组转换为对象";

Javascript 如何将数组写入电子表格。“设置值抛出”;无法将数组转换为对象";,javascript,multidimensional-array,google-apps-script,google-sheets,Javascript,Multidimensional Array,Google Apps Script,Google Sheets,我试图将数组写入电子表格,但我做错了什么。我读过很多帖子,上面说我要做我正在做的事情,但它不起作用。请参阅下面最后一行代码 在代码的最后一行 ''控制台表.getRange(2,1,x,10).设置值(最终值);'' 我犯了一个错误 “无法将数组转换为对象” 函数iterateSheets() { var ss=SpreadsheetApp.getActive(); var sh=ss.getSheetByName('filesheet'); sh.clear(); var folder=Dri

我试图将数组写入电子表格,但我做错了什么。我读过很多帖子,上面说我要做我正在做的事情,但它不起作用。请参阅下面最后一行代码

在代码的最后一行
''控制台表.getRange(2,1,x,10).设置值(最终值);'' 我犯了一个错误

“无法将数组转换为对象”

函数iterateSheets()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('filesheet');
sh.clear();
var folder=DriveApp.getFolderById('1axTLHOBPhl5_7NgFoxVihg14OSW7PVC');//用文件夹的实际id替换id
var files=folder.getFilesByType(MimeType.GOOGLE\u SHEETS);
var consol_sheet=SpreadsheetApp.openById('18JnkQYa1L-FhXFmKJBrqJ6GI7BBO-V8QAVKP8PLLoXo')。getActiveSheet();
var x=2;
var z=0;
var最终值=新数组(50000);
while(files.hasNext())
{
var file=files.next();
var ts=SpreadsheetApp.openById(file.getId());
var allShts=ts.getSheets();

对于(var i=0;i而言,
setValues
的参数应该是数组数组数组(2D数组),其中所有内部数组都有相同数量的元素,这些元素应该是字符串、数字或日期对象,不能有空元素

注:

如果你的数组是这样的

[
  [1,,'orange'], // 2nd element of this inner array is empty
  , // 2nd element of the outer array is empty
  [] // This array is empty
]
在内部数组的每个“空白点”上添加缺少的内部数组和
'
。生成的数组应如下所示:

[
  [1,'','orange'],
  ['','',''],
  ['','','']
]
(在每个空元素位置添加一个空字符串
'

相关的


将行和列写入电子表格

这里有一个简单的函数,可以将行和列写入电子表格

function writeRowColToSpreadsheet() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  sh.clear();
  var rg=sh.getRange(1,1,25,25);
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++) {
    for(var j=0;j<vA[i].length;j++) {
      vA[i][j]=Utilities.formatString('%s,%s', i+1,j+1);
    }
  }
  rg.setValues(vA);
}
函数writeRowColToSpreadsheet(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
sh.clear();
var rg=sh.getRange(1,1,25,25);
var vA=rg.getValues();

对于(var i=0;i您是否考虑过对原始2d数组、控制台值进行修改?这样您就知道您拥有与预期相同数量的元素。您可以从0/1以外的位置开始循环,具体取决于您希望忽略的原始数组中的哪些值(在本例中,拉区与写区不完全相同).

非常感谢您的输入,我觉得我正在做此链接中显示的事情。当您说没有空元素时,由于我的数据的性质,我有很多空元素。我不确定我是否可以消除它们,但我会尝试一下。@datafarmer我在回答中添加了一个注释。希望它能使我所说的内容正确更清楚的是,我认为最好的方法是写一个这样的公式——if(consol_values[y][0]。length!=0){consol_values[y][0];}else{“;}但是当我将this=设置为一个变量时,我得到了一个错误。您建议我如何将空值写入空数组元素?Cooper,感谢您的输入,我尝试了这个精确的代码,在getRange final_值[0]的第二部分得到了一个错误,这就是我硬编码该值的原因。我得到的错误是TypeError:Cannot read属性未定义的“长度”。这意味着您肯定没有二维数组。
x
从2开始。0、1和2发生了什么事?
最终_值[0]< /代码>将是“代码>未定义< /代码>。索引1和2也是如此。正如您已经声明的,这个数组必须有50K元素。设置x=0固定我的长度问题。现在我将对空白进行处理。只需声明它为空数组。<代码> var FalalValue= []/Cord>我在代码中这样做了,所以我猜现在是我的问题。
function writeRowColToSpreadsheet() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  sh.clear();
  var rg=sh.getRange(1,1,25,25);
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++) {
    for(var j=0;j<vA[i].length;j++) {
      vA[i][j]=Utilities.formatString('%s,%s', i+1,j+1);
    }
  }
  rg.setValues(vA);
}