我想做什么?
我正在尝试将我的子文件夹“年度报告”中的所有文件列到我的Google电子表格但上
我的google驱动器上有大量的文件夹和子文件夹
当我试图运行代码以获取所有文件夹和文件的列表时,这会导致错误“超过最大执行时间”。
我的google驱动器文件夹的结构是
- My Drive
- Subfolder 1: Documents by country or issue
- Subfolder2 :Albania
- Subfolder3 :Annual Reports >files
- Subfolder2 : Bulgaria
- Subfolder3 : Annual Reports >files所以on..for每个国家
因此,我设法将我的子文件夹“按国家或发行的文档”设置为根文件夹,并获得“年度报告”文件夹的ID列表
如本脚本代码所示
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]);
}
它起作用了,我在我的表格上得到了这样的结果(不能上传图片,不知道为什么)
B栏C栏 文件夹名\ 年度报告x哥伦比亚/年度报告 0Bz02kQQ7_a6paTM1SmdpZ01HYjQ _Annual Reports -斯洛伐克(SK)/_Annual Reports =0 BwW8rsOAe捷克-/Annual Reports ||0Bz02kQQ7_a6pZTJsWDR0elJTaDQ
因此,我想知道*如何编写一个脚本来为每个国家创建新的表格,
从folderID获得文件夹中的文件列表(比如从范围中获取值--列C),这是我在电子表格中得到的。
还是有更好的方法让这更容易呢?
谢谢。
发布于 2017-07-12 12:38:35
以下是一个示例:
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
}
}
}
}这些评论应该让你知道它是如何工作的。
https://stackoverflow.com/questions/45056010
复制相似问题