首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >google :通过从工作表范围获取folderID列出来自谷歌驱动器的文件

google :通过从工作表范围获取folderID列出来自谷歌驱动器的文件
EN

Stack Overflow用户
提问于 2017-07-12 11:09:23
回答 1查看 1.1K关注 0票数 0

我想做什么?

我正在尝试将我的子文件夹“年度报告”中的所有文件列到我的Google电子表格

我的google驱动器上有大量的文件夹和子文件夹

当我试图运行代码以获取所有文件夹和文件的列表时,这会导致错误“超过最大执行时间”。

我的google驱动器文件夹的结构是

代码语言:javascript
复制
- My Drive

  - Subfolder 1: Documents by country or issue

       - Subfolder2 :Albania 

            - Subfolder3 :Annual Reports >files


      - Subfolder2 : Bulgaria 
            - Subfolder3 : Annual Reports >files

所以on..for每个国家

因此,我设法将我的子文件夹“按国家或发行的文档”设置为根文件夹,并获得“年度报告”文件夹的ID列表

如本脚本代码所示

代码语言:javascript
复制
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),这是我在电子表格中得到的。

还是有更好的方法让这更容易呢?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-12 12:38:35

以下是一个示例:

代码语言:javascript
复制
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
      }
    }
  }
}

这些评论应该让你知道它是如何工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45056010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档