Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 ';数据验证规则限制为500';谷歌脚本错误_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript ';数据验证规则限制为500';谷歌脚本错误

Javascript ';数据验证规则限制为500';谷歌脚本错误,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在尝试将脚本实现到电子表格中,该电子表格将使用此代码获取Google drive api子文件夹中的所有文件夹列表和所有文件列表 我在这上面找到的 //全局变量 var ss=SpreadsheetApp.getActiveSpreadsheet() .getSheets()[0]; var listCell='B1'; var idRange='A2:B2'; 变量idCell='B2'; 函数onOpen(){ SpreadsheetApp.getUi() .createMenu('从

我正在尝试将脚本实现到电子表格中,该电子表格将使用此代码获取Google drive api子文件夹中的所有文件夹列表和所有文件列表

我在这上面找到的

//全局变量
var ss=SpreadsheetApp.getActiveSpreadsheet()
.getSheets()[0];
var listCell='B1';
var idRange='A2:B2';
变量idCell='B2';
函数onOpen(){
SpreadsheetApp.getUi()
.createMenu('从文件夹获取文件')
.addItem('步骤1:获取我的文件夹','获取所有文件夹')
.addItem('步骤2:获取所选文件夹的ID','getId')
.addItem('步骤3:获取所有文件','获取所有文件')
.addToUi();
}
函数getAllFolders(){
var-arr=[];
var all=DriveApp.getFolders();
while(all.hasNext()){
var folder=all.next();
arr.push(folder.getName())
}
arr.sort(函数(第一个,下一个){
首先,toLowerCase(),
next.toLowerCase();
返回firstnext-1:0;
});
var cell=ss.getRange(listCell);
cell.setDataValidation(SpreadsheetApp.newDataValidation()
.RequiremeEinList(arr,true)
.build())
.垂直排列(“中间”);
单元偏移量(0,-1)
.setValue('文件夹:')
.倒退(“#50803c”)
.setFontColor(“白色”)
.setFontWeight(“粗体”)
.setHorizontalAlignment(“中心”)
.垂直排列(“中间”);
ss.设置行高(1,50);
}
//步骤2
函数getId(){
ss.getRange(idRange)
.设置值([
[“ID:”,DriveApp.getFoldersByName(ss.getRange(listCell)
.getValue())
.next()
.getId()
]
])
.setVerticalAlignment(“中间”)
.setFontColor(“灰色”);
}
//步骤3
函数getAllFiles(){
var id=ss.getRange(idCell.getValue();
ss.getRange(4,1,ss.getLastRow(),ss.getLastColumn()).clear();
var arr=[
[“文件名”,“URL”]
];
var f=DriveApp.getFolderById(id).getFiles()
while(f.hasNext()){
var file=f.next();
var name=file.getName()
arr.push([name'=HYPERLINK(“')+文件
.getUrl()+“;”“+name+”)
]);
}
ss.getRange(4,1,arr.length,arr[0].length).setValues(arr);

}
这是一个与错误消息所述完全相同的问题。您可以检查此问题。应用程序脚本服务对某些功能施加每日配额和硬限制。如果您超过配额或限制,您的脚本将引发异常并终止执行。

当您进行数据验证(DV)时以列表作为源的规则,并且项数>500,则会出现错误

我也有同样的错误,在文档中没有发现任何关于这个限制的提及

如果
arr.length>500,请查看唯一的解决方案:

  • 创建辅助表
  • 将列表中的数据写在工作表上
  • 将DV规则作为源

  • 注意。数组
    arr
    是一维数组:
    [val1,val2,…]
    。当您将数据写入一个范围时,首先将其转换为一列,二维数组:
    [[val1],[val2],…]

    我在这方面运气不好吗?(T\T)我在文档中找不到它。您能告诉我它在哪里吗?