Performance 如何使这个谷歌脚本更有效
我把这个脚本放到一个文件夹中,然后得到每个文件的密钥Performance 如何使这个谷歌脚本更有效,performance,google-apps-script,google-sheets,processing-efficiency,Performance,Google Apps Script,Google Sheets,Processing Efficiency,我把这个脚本放到一个文件夹中,然后得到每个文件的密钥 function listFilesInFolder(id) { var folder = DriveApp.getFolderById(''); var contents = folder.getFiles(); var file; var name; var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(&quo
function listFilesInFolder(id) {
var folder = DriveApp.getFolderById('');
var contents = folder.getFiles();
var file;
var name;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Imported");
var date;
var size;
sheet.clear();
sheet.appendRow(["Name", "Data", "Size", "Id"]);
while(contents.hasNext()) {
file = contents.next();
name = file.getName();
date = file.getDateCreated()
size = file.getSize()
id = file.getId()
data = [name, date, size, id]
sheet.appendRow(data);
//appendRow
}
};
我的问题是要花太多的时间来完成整个文件夹,它通常会在完成之前达到运行时间限制
该文件夹包含1000多个不同的文件,我们每天自动上传文件
有没有办法让这个脚本更高效?我相信你的目标如下
- 您希望使用Google Apps脚本检索特定文件夹下的文件列表
- 您希望降低问题中当前脚本的处理成本
- 在脚本中,
在循环中使用。在这种情况下,工艺成本将很高李>appendRow
- 而且,我认为在您的情况下,当使用驱动器API时,流程成本可能会稍微降低
- 从你的问题来看,我无法理解你处境的细节。因此,在这个修改后的脚本中,可以搜索Google驱动器和共享驱动器中的文件夹
function listFilesInFolder(id) {
var folderId = "###"; // Please set the folder ID. If you want to use "id" for this, you can use var folderId = id;
// 1. Retrieve file list using Drive API.
var ar = [["Name", "Data", "Size", "Id"]];
var pageToken = "";
do {
const res = Drive.Files.list({corpora: "allDrives", includeTeamDriveItems: true, supportsAllDrives: true, maxResults: 1000, pageToken: pageToken, q: `'${folderId}' in parents`});
ar = ar.concat(res.items.map(({title, createdDate, fileSize, id}) => [title, createdDate, fileSize || 0, id]));
pageToken = res.nextPageToken;
} while(pageToken);
// 2. Put the file list to Spreadsheet.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Imported");
sheet.clear();
sheet.getRange(1, 1, ar.length, ar[0].length).setValues(ar);
}