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);
}