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