0

直到今天早上,以下代码都可以正常工作

function onOpen(e)
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("B2:B100");
  var dv = range.getDataValidation();
  dv.requireValuesInList(["Shower","Shave","Shop"]);
  dv.setShowDropDown(true);
  range.setDataValidation(dv);    
} 

但是今天晚上,这两个函数都给出了错误消息:

TypeError: Cannot find function requireValuesInList in object DataValidation.
TypeError: Cannot find function requireValuesInRange in object DataValidation.

知道发生了什么吗?这些功能被替换了吗?

只是为了测试,我创建了一个新的空白电子表格,粘贴在 onOpen 函数中并尝试运行它......没有工作。

任何洞察力都会得到极大的赞赏。

4

2 回答 2

1

如果您打印 Object.keys(dv) [列出 DataValidation 对象的所有方法] 的返回值,您现在会得到:isAllowInvalidData,setAllowInvalidData,getCriteriaValues,setHelpText,toString,setCriteria,getCriteria

似乎 DataValidation 原型刚刚彻底改变,没有任何警告或更改文档。Google 自己的文档 ( http://developers.google.com/apps-script/reference/spreadsheet/data-validation ) 指的是现已失效的 DataValidation 原型。

好一个谷歌!

Waqar,我不确定您如何声称 getDataValidation() 未记录。getDataValidation() 返回的 DataValidation 对象在我上面发布的链接中有详细记录。

于 2013-04-25T21:11:18.250 回答
0

range 对象中的 getDataValidation() 方法未记录在案,因此我们无法说出实际发生了什么。最佳实践是仅使用那些记录在案的方法和类。

这是问题跟踪器中相同的链接。你可以检查一下。

https://code.google.com/p/google-apps-script-issues/issues/detail?id=2356

于 2013-04-23T06:09:34.623 回答