使用Google Apps脚本将图像从驱动器插入Spresheet单元格

时间:2016-12-07 14:53:35

标签: google-apps-script

我希望能够通过Google云端硬盘将图片文件添加到我的电子表格中。我看到有一个内置的图像功能可用=图像,但这需要一个URL,你的图像文件在互联网上公开共享,我正在处理数字资产,不能公开分享。

我有以下代码,这可行,但不会添加到所需的单元格,这是否可能?

function insertImageFromDrive(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  var fileId = '0B5UAkV0avfiKNGYtd1VzUzlsTVk';
  var img = DriveApp.getFileById(fileId).getBlob();


  sheet.insertImage(img, 4, 3)
}

5 个答案:

答案 0 :(得分:3)

尝试使用App Script中的指南Insert image in a spreadsheet

function insertImageOnSpreadsheet() {
  var SPREADSHEET_URL = 'INSERT_SPREADSHEET_URL_HERE';
  // Name of the specific sheet in the spreadsheet.
  var SHEET_NAME = 'INSERT_SHEET_NAME_HERE';

  var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
  var sheet = ss.getSheetByName(SHEET_NAME);

  var response = UrlFetchApp.fetch(
      'https://developers.google.com/adwords/scripts/images/reports.png');
  var binaryData = response.getContent();

  // Insert the image in cell A1.
  var blob = Utilities.newBlob(binaryData, 'image/png', 'MyImageName');
  sheet.insertImage(blob, 1, 1);
}

只需替换必要的值即可。您指定插入图像的单元格的部分位于:

sheet.insertImage(blob, 1, 1);

答案 1 :(得分:1)

有一个谷歌电子表格插件ImageKit,以帮助插入来自不同来源的多个图像,包括谷歌驱动器,检查出来> https://chrome.google.com/webstore/detail/imagekit/cnhkaohfhpcdeomadgjonnahkkfoojoc 在这里,您可以找到工具界面的屏幕截图。 imagekitAddon

答案 2 :(得分:0)

答案 3 :(得分:0)

如果驱动器映像文件未在您的Google驱动器上公开,则是不可能的。话虽如此,但有一个技巧可以克服i。

首先确保映像文件是驱动器上的临时公共文件。您也可以通过将文件权限更改为DriveApp.Access.ANYONEDriveApp.Permission.EDIT来通过应用脚本执行此操作。然后,驱动器文件就像是来自互联网的文件。然后,您可以添加Blob。

之后,您可以决定两件事。 改回权限或从驱动器中删除图像文件(如果您只想使用嵌入到Blob中的图像文件(如果需要,还可以通过应用程序脚本代码)

祝你好运

答案 4 :(得分:0)

这是另一个不涉及斑点的替代方法:

var fileId = "...";
sheet.insertImage("https://docs.google.com/uc?id=" + fileId, column, row);

请确保您的文件已打开链接共享,否则此方法将不起作用。

Documentation