使用Google Apps脚本将图像从Google云端硬盘或URL插入Google表格中

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

我在下面使用此脚本将URL中的图像插入Google表格中的指定单元格中,但是,它不适用于Google Drive中包含的图像URL。

//If any graphic is a URL, insert that URL into the corresponding cell in the Briefing tab.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheetByName("main_gen").getRange("ImageRange").getValues();
  var dstSheet = ss.getSheetByName("Briefing");
  for (var num = 0; num < source.length; num ++) {
    if (/https?:\/\//.test(source[num][0])) { //Check to ensure a URL has been entered.
      var graphicformula = '=IMAGE("' + source[num][0] + '",1)';
      dstSheet.getRange(graphics_placements[num]).setFormula(graphicformula);
    }
  }

用户在一个选项卡上以预定义数量的单元格输入图像的URL。根据它们选择的顺序(可以有1到5张图像),图像将插入到另一个选项卡上的指定单元格中。我该如何重写上面的代码来说明这样的URL(https://google.com/image.png)和这样的URL(https://drive.google.com/open?id=12Au6IQE9l9X_hzM5n87Fs9gajJ)?

谢谢!

google-apps-script
1个回答
0
投票
  • 您想使用IMAGE()的公式将Google云端硬盘中的图像文件放入电子表格。
    • 在您的情况下,URL类似于https://google.com/image.pnghttps://drive.google.com/open?id=###
    • https://google.com/image.png是外部链接。
    • https://drive.google.com/open?id=###是您的Google云端硬盘中的链接。
  • 您想使用Google Apps脚本来实现。

如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。

问题和解决方法:

[遗憾的是,无法使用IMAGE()将Google云端硬盘中的图像文件直接放入电子表格。在这种情况下,图像文件需要公开共享。因此,在此答案中,文件被公开共享并放置到电子表格中。

修改的脚本:

修改脚本后,请进行如下修改。

从:
for (var num = 0; num < source.length; num ++) {
  if (/https?:\/\//.test(source[num][0])) { //Check to ensure a URL has been entered.
    var graphicformula = '=IMAGE("' + source[num][0] + '",1)';
    dstSheet.getRange(graphics_placements[num]).setFormula(graphicformula);
  }
}
至:
for (var num = 0; num < source.length; num ++) {
  if (/https?:\/\//.test(source[num][0])) { //Check to ensure a URL has been entered.
    var res = source[num][0].match(/https:\/\/drive\.google\.com\/open\?id=(\w.+)/);
    if (res && res.length > 0) {
      var file = DriveApp.getFileById(res[1]);
      file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
      source[num][0] = "https://drive.google.com/uc?export=download&id=" + res[1];
    }
    var graphicformula = '=IMAGE("' + source[num][0] + '",1)';
    dstSheet.getRange(dstSheet.getLastRow() + 1, 1).setFormula(graphicformula);
  }
}

注意:

  • 如果包含https://drive.google.com/open?id=###模式以外的URL,请显示示例URL。

参考:

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