无法调用未定义的方法“ getValues”

时间:2019-08-01 14:38:55

标签: javascript google-apps-script

返回的错误是:

  

“ TypeError:无法调用未定义的方法“ getValues”。(第7行,文件“代码”)”

function setDropdown() {
  var ss = SpreadsheetApp.getActive();
  var sht = ss.getSheetByName('Sheet1');

  selecionaRange(sht);

  var arrayValues = rng.getValues();

  var rangeRule = SpreadsheetApp.newDataValidation().requireValueInList(arrayValues);
  ss.getRange('sheet1!A6').setDataValidation(rangeRule);
}

function selecionaRange(sht) {
  if (sht.getRange("A1") == "IM") {
    return rng = sht.getRange('B1:B5');
  }
}

3 个答案:

答案 0 :(得分:1)

非常感谢您努力帮助我。我发现我的问题是在sht.getRange(“ A1”)之后缺少.getValue()方法

现在可以了。

var rng = null //or better another value
  function setDropdown() {
   var ss = SpreadsheetApp.getActive();
   var sht = ss.getSheetByName('Sheet1');

 selecionaRange(sht);

 var arrayValues = rng.getValues();

 var rangeRule = SpreadsheetApp.newDataValidation().requireValueInList(arrayValues);
 ss.getRange('sheet1!A6').setDataValidation(rangeRule);
}

function selecionaRange(sht) {
  if (sht.getRange("A1").getValue() == "IM") { //Here must have .getValue()
  return rng = sht.getRange('B1:B5');
  }
}

答案 1 :(得分:0)

  function setDropdown() {
   var ss = SpreadsheetApp.getActive();
   var sht = ss.getSheetByName('Sheet1');

 var rng = selecionaRange(sht);

 var arrayValues = rng.getValues();

 var rangeRule = SpreadsheetApp.newDataValidation().requireValueInList(arrayValues);
 ss.getRange('sheet1!A6').setDataValidation(rangeRule);
}

function selecionaRange(sht) {
  if (sht.getRange("A1") == "IM") {
  return sht.getRange('B1:B5');
  }
}

答案 2 :(得分:0)

您的代码开始如下:

function setDropdown() {
  var ss = SpreadsheetApp.getActive();
  var sht = ss.getSheetByName('Sheet1');

  selecionaRange(sht);

  var arrayValues = rng.getValues();

请注意,第var arrayValues = rng.getValues();行-您正在处理的rng对象未定义。您需要先对其进行定义,从函数外部获取它或将其作为参数传递-但是您需要在调用方法或对其执行任何操作之前将其存在。

此外,在selecionaRange方法内的return语句中,您无需将sht.getRange('B1:B5');值设置为rng然后返回它...只需返回函数返回的内容,像这样:

return sht.getRange('B1:B5');