列出谷歌驱动器文件夹内容,其中文件夹名称基于单元格值[已解决]

问题描述 投票:0回答:2

我正在使用从这篇文章借用的原始代码来列出驱动器中指定文件夹的内容。

将 Google 云端硬盘文件夹内容列出到仅包含新文件的 Google 表格

function wthFolderContents() {
  var folder_id = 'myFolderID';
   
  var folders = DriveApp.getFolderById(folder_id)
  var contents = folders.getFiles();
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("SheetName");
  sheet.clearContents()
  sheet.appendRow( ['name', 'link'] );
  
  var file;
  var name;
  var link;
  var row;
  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    link = file.getUrl();
    sheet.appendRow ( [name, link] );

我需要的是这里的这个变量基于A1中的单元格值:

 var folder_id = 'myFolderID';

我需要根据单元格 A1 的值检索另一个单元格中的文件夹 ID 并让脚本引用该单元格,或者让代码根据单元格 A1 动态查找文件夹 ID。

非常感谢任何帮助。

google-apps-script google-drive-api
2个回答
1
投票

你可以试试这个:

来自:

var folder_id = 'myFolderID';

致:

var folder_id = sheet.getRange('A1').getValue(); 

请按照这个完整修改代码的整理:

function wthFolderContents() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("SheetName");
  var folder_id = sheet.getRange('A1').getValue(); 
   
  var folders = DriveApp.getFolderById(folder_id)
  var contents = folders.getFiles();
  
  sheet.clearContents()
  sheet.appendRow( ['name', 'link'] );
  
  var file;
  var name;
  var link;
  var row;
  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    link = file.getUrl();
    sheet.appendRow ( [name, link] );

  }

}

示例输出:

enter image description here

参考:

getValue()

更新:

这是运行脚本之前单元格

A1
的示例值。它应该包含有效的
Folder Id

enter image description here

您可以通过以下方式获得

Folder Id

从您所需的文件夹中,复制 URL 的突出显示部分,然后将其粘贴到电子表格的单元格

A1
中,请参阅下图以供参考:

enter image description here


0
投票

这是我的具体问题的解决方案。运行脚本时,它会显示“id here”文件夹中的每个文件。然后,我只需在 colA (JOB#) 上运行一个简单的查询来过滤我需要的文件名。

function getAndListFilesInFolder() {
  var arr,f,file,folderName,subFolders,id,mainFolder,name,own,sh,thisSubFolder,url;

  sh = SpreadsheetApp.getActive().getSheetByName('google_drive');
  sh.getRange(1, 1, 100, 10).clear({contentsOnly: true})

  id = "id here";
  arr = [["JOB#","DOCUMENT NAME", "URLs", "OWNER"]];

  mainFolder = DriveApp.getFolderById(id);
  subFolders = mainFolder.getFolders();
  folderName = mainFolder.getName();

  f = mainFolder.getFiles();

  while (f.hasNext()) {
    file = f.next();
    name = file.getName()
    url = file.getUrl()
    own = file.getOwner().getName()

    arr.push([folderName, name, url, own]);
  };

  while (subFolders.hasNext()) {
    thisSubFolder = subFolders.next();
    f = thisSubFolder.getFiles();
    folderName = thisSubFolder.getName();

    while (f.hasNext()) {
      file = f.next();
      name = file.getName()
      url = file.getUrl()
      own = file.getOwner().getName()

      arr.push([folderName,name, url, own]);  
    };
  };

  sh.getRange(1,1, arr.length, arr[0].length).setValues(arr);
  sh.getRange(2,1, arr.length, arr[0].length).sort(1);
}
© www.soinside.com 2019 - 2024. All rights reserved.