google-apps-script - 如何将链接转换为文件名?

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

我有一个包含近 2000 行 URL 的 Google 电子表格文件,例如:

https://docs.google.com/uc?id=0B4ptELk-D3USblk1aWd1OWowRWs

每个 URL 都包含一张图片,存储在 Google 云端硬盘中。我的问题是:如何将此链接 (https://docs.google.com/uc?id=0B4ptELk-D3USblk1aWd1OWowRWs) 转换为文件名?例如,我想知道它是否可以是 /something/folder/Photofile1.jpg

有什么办法吗?

最佳答案

尝试脚本:

function TESTgetFileName() {
  Logger.log(getFileName('0B4ptELk-D3USVi1NZ3ZGbkhqYXc'));
  //                      ^^^^^^^^^^ file ID ^^^^^^^^^
}


function getFileName(id) {
  var file = DriveApp.getFileById(id);
  var fileName = file.getName();    
  var strFolders = getFolders(file); 
  return strFolders + '/' + fileName;  
}

function getFolders(object) {

  var folders = object.getParents();
  if (!folders.hasNext()) { return 'My Drive'; } 
  var folder = folders.next();

  var folderNames = [];

  while (folder.getParents().hasNext()) {        
    var folderName = folder.getName();
    folderNames.unshift(folderName);
    folder = folder.getParents().next();
  }

  return folderNames.join('/');

}

脚本函数将返回结果:

0B4ptELk-D3USVi1NZ3ZGbkhqYXc → 我的驱动器/something/folder/Photofile1.jpg

测试

我打开脚本编辑器,选择函数 TESTgetFileName 并得到结果

我的驱动器/Detalhes_Farmacia.Fotografia_Fachada_1.JPEG

此函数可以从脚本运行,而不是直接从电子表格运行。当您尝试将其用作工作表中的自定义公式时,它会抛出错误:

You do not have permission to call getFileById (line 8).

所以最好从脚本中使用它来获取数据,然后将结果写入工作表。

关于google-apps-script - 如何将链接转换为文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42527328/

相关文章:

google-apps-script - Google Apps 脚本 - 可能的图表类型

python - 使用 oauth2 和服务器端 python 的范围无效

javascript - 获得 "This app isn' t 验证“对于只涉及我的工作表的 Google 表格脚本

charts - 如何自动更新链接到 Google 表格的图表?

google-sheets - Google Sheet API v4

Python 和 Google Sheets - 检查数据在哪一行

google-drive-api - Google Drive 和 CORS 跨域请求

google-drive-api - Google Sheet OAuth 范围只能访问几个文件?

javascript - 获取 google-apps-script 中的当前单词

ios - 如何使用 Google Apps 在 Google 表单上请求数字小键盘?