Google表格:从共享表格制作图像链接的本地副本

时间:2019-09-26 11:18:40

标签: google-sheets

我的朋友向我分享了他的Google工作表,表格中包含图片(链接)。我如何制作此工作表的副本并使所有图像链接都位于本地,所以我希望图像自动复制到我的本地google驱动器中(因此,如果他将来删除其图像文件,链接不会断开) 。现在,如果我复制此文档,则它仍链接到原始图像源。

怎么可能?当然,我不想手动从链接中一一复制它们。有什么更好,更快的方法吗?

https://docs.google.com/spreadsheets/d/1TkXwAd8rKbjnGfYEJVaOYBJwCZ7G7YfuSvmcDE6g8No/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

OP希望从超链接公式中提取图像URL,并将图像副本保存到自己的Google云端硬盘帐户中。

此答案结合了StackOverflow上的一些先例元素。


function so5811567402() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheetName = "Table";
  var sh = ss.getSheetByName(sheetName);
  var rg=sh.getDataRange();
  var lastColumn = sh.getLastColumn();
  var lastRow = sh.getLastRow();

  var formulas = rg.getFormulas();

  for (var i in formulas) {
    for (var j in formulas[i]) {
      var formula = formulas[i][j];
      if (formula.length !=0){

        var regex = /image\("(.*)"/i;
        var matches = formula.match(regex);
        var imgurl = matches[1];
        var filename = imgurl.substring(imgurl.lastIndexOf("/") + 1, imgurl.lastIndexOf("."));
        //Logger.log(filename);

        var image = UrlFetchApp.fetch(imgurl).getBlob().getAs('image/jpeg').setName(filename);

        var FolderId = "Folder ID goes here";
        var folder = DriveApp.getFolderById(FolderId);
        var file = DriveApp.createFile(image);
        Drive.Files.update({"parents": [{"id": folder.getId()}]}, file.getId());
      }
    }
  }
}