Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 Google Sheets脚本错误-无法将数组转换为对象[][]_Javascript_Google Sheets - Fatal编程技术网

Javascript Google Sheets脚本错误-无法将数组转换为对象[][]

Javascript Google Sheets脚本错误-无法将数组转换为对象[][],javascript,google-sheets,Javascript,Google Sheets,我正在编写一个脚本,对字段中的数据进行编码,以便插入到HTML中(单元格中包含Planétarium和Rua João Bettega,01)。我遇到了一个错误,不知道该怎么办。错误显示“无法将数组转换为对象[][]” 我肯定会将一个二维数组传递给.setValues(),所以我知道这不是问题所在(发现这是一个常见问题)。有什么想法吗?以下是我的功能: // columns[] and columns2encode[] are set in the scope above this functi

我正在编写一个脚本,对字段中的数据进行编码,以便插入到HTML中(单元格中包含
Planétarium
Rua João Bettega,01
)。我遇到了一个错误,不知道该怎么办。错误显示“无法将数组转换为对象[][]”

我肯定会将一个二维数组传递给
.setValues()
,所以我知道这不是问题所在(发现这是一个常见问题)。有什么想法吗?以下是我的功能:

// columns[] and columns2encode[] are set in the scope above this function
function _encodeData() {
  var sheet = _getSheet();
  var data = sheet.getDataRange().getValues();
  var rowCnt = data.length;
  var colCnt = data[0].length;
  var data2set = new Array(rowCnt-1); // creates array w/ row.length indeces
  var colEncodeIndexList = [];
  var origVal, encodedVal, range, cell; // used later in for loop(s)

  toast('Start Encoding Data');

  // loop every row
  for(var ri = 0; ri < data.length; ri++) {
    if(ri !== 0) {
      data2set[ri] = new Array(colCnt); // creates array w/ length of ~ 29
    }

    // loop every cell (column entry in the given row)
    for(var ci = 0; ci < data[ri].length; ci++) {
      // get text content of current cell
      origVal = data[ri][ci];

      // if first row, headers - save matches in array for later
      if(ri === 0) { // I split the ifs so inArray isn't called EVERY time
        if(inArray(columns2encode, origVal)) { // add col header if "on the list"
          colEncodeIndexList.push(ci);
        }
      } else { // isn't the header row
        // if ! first row, values - col num must be in saved headers to encode OR it's a number
        if(!inArray(colEncodeIndexList, ci) || typeof origVal === 'number') {
          // just use origVal
          data2set[ri][ci] = origVal;
        } else {
          // use encodedVal
          encodedVal = _htmlEncode(origVal);

          data2set[ri][ci] = encodedVal;
        }
      } // else
    } // for (cells/cols)
  } // for (rows)

  // Now pass array of arrays (data) to setValues()
  var setRange = sheet.getRange(2, 1, (data.length-1), data[0].length);//.getA1Notation(); // starts at 2, 1 (row 2, col 1) to ignore column header
  setRange.setValues(data2set);

  toast('Finished Encoding Data');
}
//列[]和列s2encode[]设置在此函数上方的作用域中
函数_encodeData(){
var sheet=_getSheet();
var data=sheet.getDataRange().getValues();
var rowCnt=data.length;
var colCnt=数据[0]。长度;
var data2set=new Array(rowCnt-1);//创建带有row.length索引的数组
var colEncodeIndexList=[];
var origVal,encodedVal,range,cell;//稍后在for循环中使用
toast(“开始编码数据”);
//每行循环
对于(var ri=0;ri

提前谢谢

问题在于,
data2set[0]
从未初始化(它始终为空)

解决此问题的最简单方法是在输出到电子表格之前删除data2set[0]:

  data2set.shift(); // remove 1st item
  setRange.setValues(data2set);

问题是,
data2set[0]
从未初始化(它始终为空)

解决此问题的最简单方法是在输出到电子表格之前删除data2set[0]:

  data2set.shift(); // remove 1st item
  setRange.setValues(data2set);

从脚本编辑器运行代码。它应该告诉您哪一行抛出错误。请告诉我们第130行(setRange.setValues(data2set);
方法调用)上有哪一行错误。从脚本编辑器运行代码。它应该告诉您哪一行抛出错误。请告诉我们第130行(setRange.setValues(data2set);方法调用)上出现了哪一行错误。很好的发现!我以为我已经解释了0指数,但似乎没有。谢谢你的帮助,@danielGood find!我以为我已经解释了0指数,但似乎没有。谢谢你的帮助,丹尼尔