无法将数组从谷歌网络应用程序设置为谷歌工作表



我正在尝试将新值与Google表格中的现有值组合在一起。因此,当用户输入代码输入时,它将找到代码输入行并将用户刚刚填充的formObject.things值添加到现有的thingsList值(与codeInput相同的行(。我尝试了此代码,但它在Google表格中返回空白。

您的回复将不胜感激。

这是我的代码:

function update1(formObject) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ws = ss.getSheetByName("Sheet1");
var data = ws.getRange(5, 1, ws.getLastRow()-1, 1).getValues();

var codeList = data.map(function(r){return r[0].toString(); });
var thingsList = data.map(function(r){return r[8]; });
var position = codeList.indexOf(formObject.codeInput);
var array = [thingsList[position], formObject.things]
if (position > -1) {
position += 5;
ws.getRange(position,9).setValue(array);
}
}

关于

var array = [thingsList[position], formObject.things]

ws.getRange(position,9).setValue(array);
  1. array的类型是Array
  2. setValue不允许Array对象作为参数。它接受、stringnumberDateBoolean

而不是setValue

  1. 您可以传递一个谷歌表格数组(即={1,2}( 通过使用setFormula
  2. 您可以使用setValues将双向Array传递给 Google 表格
  3. 您可以使用appendRow传递数组(一维Array(

关于

var data = ws.getRange(5, 1, ws.getLastRow()-1, 1).getValues();

var thingsList = data.map(function(r){return r[8]; });

data是并且Array可能有多个,但它只有一,因此,r[8]返回null导致thinkslistnull值数组。

到目前为止,该问题没有包含足够的细节来了解可能需要的修复程序,但这里有两种可能性:

var data = ws.getRange(5, 1, ws.getLastRow()-1, 9).getValues(); 

var data = ws.getRange(5, 1, ws.getLastRow()-1, ws.getLastColumn()).getValues();

最新更新