我想做什么?
我试图列出子文件夹中的所有文件"年度报告"在我的Google云端硬盘上访问我的Google电子表格 ,但
我的google云端硬盘上有很多文件夹和子文件夹
并且当我尝试运行代码以获取所有文件夹和文件的列表时,"超出了最大执行时间"
我的google云端硬盘文件夹的结构是
- My Drive
- Subfolder 1: Documents by country or issue
- Subfolder2 :Albania
- Subfolder3 :Annual Reports >files
- Subfolder2 : Bulgaria
- Subfolder3 : Annual Reports >files
依此类推...适用于每个国家
所以,我设法设置我的子文件夹"文件按国家或问题"成为rootfolder并获取'年度报告'夹
如此脚本代码
var sheet = SpreadsheetApp.getActiveSheet();
function generateFolderTree() {
sheet.clear();
sheet.appendRow(["Folder Name", "Rootfolder name", "ID"]);
var parent = DriveApp.getFoldersByName("Documents by country or issue").next();
getChildFolders(parent);
}
function getChildFolders(parent) {
var childFolders = parent.getFolders();
var parentName = parent.getName();
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
fileName = childFolder.getName();
root = parentName + "/" + fileName;
fileID = childFolder.getId();
if (fileName == "Annual Reports") {
sheet.appendRow([fileName, root, fileID]);
} else if (fileName == "_Annual Reports") {
sheet.appendRow([fileName, root, fileID]);
}

并且它有效,我在我的工作表上得到了这样的结果(无法上传图片,不知道为什么)
A栏|| B栏|| C栏
文件夹名称|| Rootfolder名称|| ID
年度报告||哥伦比亚/年度报告||
0Bz02kQQ7_a6paTM1SmdpZ01HYjQ_年度报告||斯洛伐克(SK)/ _年度报告|| 0BwW8rsOAeCzneUlDUk1pcGNlVU0
年度报告||瑞士(CH)/年度报告|| 0Bz02kQQ7_a6pZTJsWDR0elJTaDQ
所以我想知道***如何编写脚本来为每个国家/地区创建新工作表
从我在电子表格中获取的folderID中获取文件夹内的文件列表(例如从范围中获取值 - 列C)。
或者是否有推荐的方法让这更容易?
谢谢。
答案 0 :(得分:0)
以下是一个示例:
function createSheetForEachCountry() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var data = sheet.getRange(2, 2, sheet.getLastRow()-1, 2).getValues(); // Get country name and folder id
for(var i = 0;i<data.length;i++){ // For all the id on the main sheet
if(data[i][0] != "" && data[i][1] != ""){ // Check if we got some data
var newSheet = ss.insertSheet(data[i][0]); // Create the sheet with the country name
var files = DriveApp.getFolderById(data[i][1]).getFiles(); // Get files from folder
while(files.hasNext()){ // While there is files
var file = files.next(); // Look on the next file
newSheet.appendRow([file.getId()]); // And add his id on the sheet
}
}
}
}
评论应该让你知道它是如何运作的。