我有一堆Google Spreadsheets的已发布URL的清单很长。这些网址看起来像https://docs.google.com/a/company.com/spreadsheets/d/e/2PACX-[some very long string]/pubhtml?gid=[sheet ID]&single=true&widget=true&headers=false。
所有源电子表格都位于我有权访问的共享驱动器上的文件夹中。
我需要获取每个电子表格的常规驱动器文件ID。
我尝试使用UrlFetchApp
打开获取已发布的URL文件,以查看它是否具有可用于提取驱动器文件ID的任何信息,但出现401错误。
是否有从发布的URL获取内部驱动器文件ID的信息?
答案 0 :(得分:1)
https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml?gid=0&single=true&widget=true&headers=false
https://drive.google.com/drive/folders/###?usp=sharing
###
是文件夹ID。如果我对您的情况的理解正确,那么该解决方法如何?
不幸的是,无法直接从发布的URL(如https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml?gid=0&single=true&widget=true&headers=false
)中检索文件ID。我认为这可能是规范。
因此,根据您的情况,我想提出一种解决方法。此解决方法的流程如下。请认为这只是几个答案之一。
https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml?gid=0&single=true&widget=true&headers=false
的URL中检索HTML数据。###
中的<title>###</title>
是电子表格的文件名。当上述流程反映到脚本时,它如下所示。
使用此脚本时,请设置已发布电子表格的URL和共享文件夹的文件夹ID。
function myFunction() {
var url = "https://docs.google.com/spreadsheets/d/e/2PACX-###/pubhtml?gid=0&single=true&widget=true&headers=false"; // URL of the published Spreadsheet.
var folderId = "###"; // FolderId of shared folder including the published Spreadsheet.
var res = UrlFetchApp.fetch(url);
var filename = res.getContentText().match(/<title>(.+)<\/title>/)[1];
var files = DriveApp.getFolderById(folderId).getFiles();
while (files.hasNext()) {
var file = files.next();
if (file.getMimeType() == MimeType.GOOGLE_SHEETS && file.getName() == filename) {
Logger.log("filename: %s, fileId: %s", filename, file.getId())
}
}
}
如果我误解了您的问题,并且此解决方法不是您想要的方向,我深表歉意。