我如何将链接转换为文件名?

问题描述 投票:2回答:1

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

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

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

反正有这样做吗?

google-apps-script google-sheets google-drive-api
1个回答
0
投票

尝试脚本:

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 → My Drive/something/folder/Photofile1.jpg

测试

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

My Drive/Detalhes_Farmacia.Fotografia_Fachada_1.JPEG

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

您无权调用getFileById(第8行)。

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

© www.soinside.com 2019 - 2024. All rights reserved.