在Google工作表中创建从URLS到Google云端硬盘上的文件的直接链接

时间:2017-06-28 20:23:44

标签: excel google-sheets concatenation spreadsheet

我想在google工作表中创建Google云端硬盘上我的文件的直接链接。我知道如何手动完成此操作。但是需要一个公式来提取一个URL的唯一ID并将其添加到另一个URL中。

示例表 https://docs.google.com/spreadsheets/d/11TuHD8CvGunF08swEqXCMuG-ZdWWL3f6csoV5lN1nVE/edit#gid=112012263

我尝试使用= HYPERLINK(CONCATENATE和REGEXREPLACE(ImportXML),但我真的无处可去,并且不知道从哪里开始。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

将这些脚本放入脚本编辑器中。一旦创建一个包含一个项目的菜单,就运行onOpen。现在返回到您的电子表格,确保文件名列表右侧有一个空白列,然后选择所有文件名和右侧的单元格。然后从“我的工具”菜单中选择“获取文件链接”。它会将文件ID放在所有选定文件的旁边。它今天运行缓慢所以请耐心等待。此外,如果其中一个文件导致错误,我没有错误恢复,所以你必须手动完成。我不会一次选择太多,因为有一个6分钟的脚本超时。

function onOpen()
{
  SpreadsheetApp.getUi().createMenu('My Tools')
    .addItem('Get Links to Files','testFind')
    .addToUi();
}

function testFind()
{
  var sht = SpreadsheetApp.getActiveSheet();
  var rng = sht.getActiveRange();
  var rngA = rng.getValues();
  for(var i=0;i<rngA.length;i++)
  {
    rngA[i][1]=findFileByNameReturnId(rngA[i][0]);
  }
  rng.setValues(rngA);
}

function findFileByNameReturnId(name)
{
 var rv = '';
 var files = DriveApp.getFiles();
 while (files.hasNext()) 
 {
   var file = files.next();
   if(file.getName()==name)
   {
     rv = file.getId();
   }
 }