APPS SCRIPT - 从文件夹 ID 数组中获取 URL 和文件名

2023-12-26

我想从文件夹 ID 数组中获取文件 URL 和名称,我正在使用脚本进行重试。

我希望将结果放置在“文件”选项卡上。

我用来获取 filesID 的脚本如下:

function Folders_URL() {
var ss=SpreadsheetApp.getActive().getSheetByName("Overview");

var fldr=DriveApp.getFolderById("someID");

var files=fldr.getFolders();
var names=[],f,str; while (files.hasNext()) {
f=files.next();
names.push([f.getId(), f.getName()]);
}
ss.getRange(4,2,names.length, 2).setValues(names);
}

为了获取带有 URL 的文件名称,我使用此代码。 如果有人可以加入这两个代码或者只是从foldersID数组中获取URL和文件名,那将非常有帮助

function getFileNames() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("someLink");
 
  //Range where the links are set
  var links = sheet.getRange("F3:F").getValues();

  var filenames = []; 
  for (var i = 0; i < links.length; i++) {
    var url = links[i][0];
    if (url != "") {
      var filename = SpreadsheetApp.openByUrl(links[i][0]).getName();
      filenames.push([filename]);
    }
  }

  //Define cell range
  var startRow = 3; // print in row 2 since row 1 is the header row
  var fileNameColumn = 4; // Column B = column 2
  var destinationCell = sheet.getRange(startRow, fileNameColumn, filenames.length, filenames[0].length);
  destinationCell.setValues(filenames);
}

请注意,我无法分享任何表格,因为我有敏感信息。 谢谢!

更新的答案

New error when running the script: enter image description here


Get Urls

我在我的数据上测试了这段代码,它工作得很好。如果它对您的数据不起作用,那么问题就出在您的数据上。

function getUrls() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet0");
  const osh = ss.getSheetByName("Sheet1");
  const vs = sh.getRange(4, 1, sh.getLastRow() - 3, sh.getLastColumn()).getValues();
  let obj = { pA: [] };
  vs.forEach((r, i) => {
    let fldr = DriveApp.getFolderById(r[1]);
    let files = fldr.getFilesByName(r[2]);
    while (files.hasNext()) {
      let file = files.next();
      let name = file.getName();;
      if (!obj.hasOwnProperty(name)) {
        obj[name] = [file.getUrl()];
        obj.pA.push(name)
      } else {
        obj[name].push(file.getUrl())
      }
    }
  });
  if (obj.pA.length > 0) {
    let o = obj.pA.map(p => [p, obj[p].join('\n')]);
    osh.clearContents();
    if(o.length > 0) {
      osh.getRange(1, 1, o.length, o[0].length).setValues(o);
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APPS SCRIPT - 从文件夹 ID 数组中获取 URL 和文件名 的相关文章

随机推荐