Google Apps脚本 - 使用文件名获取云端硬盘中的文件网址

时间:2018-03-22 13:55:00

标签: google-apps-script google-sheets google-drive-api

我正在尝试在Google Spreadsheets中创建一个表单,该表单将根据文件名从我的Drive中提取图像文件并将其插入单元格。我已经读过您目前无法通过Google脚本直接执行此操作,因此我使用setFormula()和目标单元格中​​的= IMAGE()函数来插入图像。但是,我需要图像的URL才能执行此操作。我需要使用文件名来获取URL,因为表单将唯一的数字ID连接成一个字符串,以使用这些文件的标准化命名约定。我的问题是,当我使用getFilesByName时,它返回一个File Iteration,我需要一个File才能使用getUrl()。下面是我的代码片段,它当前返回错误"无法在对象FileIterator中找到函数getUrl。"

len

2 个答案:

答案 0 :(得分:1)

如果您确切知道文件名,可以使用DriveApp搜索文件并获取getUrl()

function getFile(name) {
  var files = DriveApp.getFilesByName(name);
  while (files.hasNext()) { 
    var file = files.next();
    //Logs all the files with the given name
    Logger.log('Name:'+file.getName()+'\nUrl'+ file.getUrl());
  }
}

如果您不完全知道名称,可以使用DriveApp.searchFiles()方法。

答案 1 :(得分:0)

您已关闭 - 一旦您拥有FileIterator,您需要提前获取文件,即致电FileIterator.next()

如果多个文件可以具有相同的名称,则所需的文件可能不是第一个。我建议你在脚本中检查一下,以防万一:

var searchName = "PO + .....";
var results = DriveApp.getFilesByName(searchName);
var result = "No matching files";
while (results.hasNext()) {
  var file = results.next();
  if (file.getMimeType() == MimeType. /* pick your image type here */ ) {
    result = "=IMAGE( .... " + file.getUrl() + ")");
    if (results.hasNext()) console.warn("Multiple files found for search '%s'", searchName);
    break;
  }
}
sheet.getRange( ... ).setFormula(result);

您可以在documentation

中查看可用的MimeTypes
相关问题