【发布时间】:2022-01-17 14:34:39
【问题描述】:
因此,我需要从电子表格中的一系列 Google Drive URL 中获取文件名列表。在网上浏览,我遇到了下面的代码。它适用,但仅适用于旧式网址,我听说 Google 在 2021 年 9 月更改了旧式网址。 注意链接不全,请替换成真实链接查看!
旧样式是:
https://drive.google.com/file/d/1GMUwYxZxsNpLiaYOiVMBwl41LpreQ-fc/view?usp=sharing
这可以从下面的代码中正常工作。
我想要的是两件事。
它应该处理一系列的列,当前读取AE2:AE,并在AM2:AM 上打印出来。我想要的是通过范围:AE2:AL 并打印出:AM2:AT
其次,它还应该处理较新的表单网址:
https://drive.google.com/file/d/0B9EZQqsLDEqDUGlsdy1oVEtETGs/view?usp=sharing&resourcekey=0-h7HOcxayPaHJ5r6dAAslVQ
当前代码:
function getNames() {
var activeRange = SpreadsheetApp.getActiveSheet().getDataRange();
var height = activeRange.getHeight();
var links = SpreadsheetApp.getActiveSheet()
.getRange("AE2:AE" + height)
.getValues();
var nameValues = [];
links.forEach((row) => {
try {
var link = row[0];
var fileID = getIdFromLink(link);
var name = DriveApp.getFileById(fileID).getName();
nameValues.push([name]);
} catch (e) {
nameValues.push(["NO NAME FOUND"]);
}
});
var nameRange = SpreadsheetApp.getActiveSheet().getRange("AM2:AM" + height);
nameRange.setValues(nameValues);
}
function getIdFromLink(link) {
var regex = new RegExp(
/(?<=https:\/\/drive\.google\.com\/file\/d\/)(.+)(?=\/)/
);
return regex.exec(link)[0];
}
应该如何修改上面的代码以启用我想要的。抱歉,我尝试了几个 if/else 语句,但我的 Javascript 知识非常有限。
任何帮助将不胜感激。
当前“屏幕截图”显示:
(1) - 旧式 url - 正确获取文件名 (2)
(3) - 新样式 url - 不拾取文件名 (4)
【问题讨论】:
-
捕获后为什么没有记录错误?
标签: javascript google-apps-script google-sheets google-drive-api