如何将谷歌电子表格中的单元格链接到谷歌驱动器上的文件夹中的图像?

时间:2016-05-23 02:17:02

标签: google-sheets google-spreadsheet-api

我有一个google电子表格,其中包含一个名为photo的列。在该列中是图像名称(例如:" 123"),它们与单独的google驱动器文件夹中的图像匹配(例如:" IMG_123.jpg")。目前,为了查看图像,我必须打开谷歌驱动器文件夹并手动搜索图像。

我想做这样的事情,如果A1是包含内容的单元格" 123":

"=HYPERLINK('https://drive.google.com/drive/foldername/IMG_"&A1&".jpg',"&A1&");"

如果这是可能的,那么网址应该引用特定的图像?

更新

现在我已经创建了一个有效的Google脚本功能!但它似乎只适用于范围内的第一个活动单元格:

function getImageLinks() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveRange();
  var folder = DriveApp.getFolderById("my_folder_id_here");
  var contents = folder.getFiles();

  var numRows = range.getNumRows();
  var numCols = range.getNumColumns();

  for (var i = 1; i <= numRows; i++) {
    for (var j = 1; j <= numCols; j++) {
      var imgName = range.getCell(i,j).getValue();
      while (contents.hasNext()) {
        var file = contents.next();
        var fileName = file.getName();

        if(fileName.search(imgName) >= 0){
          range.getCell(i,j).setFormula("=HYPERLINK(\""+file.getUrl()+"\",\""+imgName+"\")");
          break;
        }
      }
    }
  }
}

有谁可以指出我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

我不认为这样做会很有效。您会注意到,如果您转到该特定文件夹,该URL未引用该文件夹名称。它引用了一个特定的ID字符串。文件也一样。

ways to do that with Google Script

function getImageLinks() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var folder = DriveApp.getFolderById("YOUR_FOLDERID");
  var contents = folder.getFiles();

  var numRows = sheet.getLastRow();
  Logger.log('number of rows = ' + numRows);

  for (var i = 1; i <= numRows; i++) {

      var imgName = sheet.getRange(i, 1).getValue(); //adjust number to reflect column of value
      while (contents.hasNext()) {
        var file = contents.next();
        var fileName = file.getName();

        if(fileName.search(imgName) >= 0){
          sheet.getRange(i,1).setFormula("=HYPERLINK(\""+file.getUrl()+"\",\""+imgName+"\")"); //adjust number for getRange to reflect column
          break;

      }
    }
  }
}