使用应用程序脚本在文档中插入指向工程图的链接

时间:2019-02-14 09:00:25

标签: google-apps-script google-docs

我正在尝试在Google文档中插入指向工程图的链接。

我希望代码给出与以下输入相同的结果:

1。打开文档

2。插入

3。绘图

4。来自驱动器

5。链接到来源

我的代码只是将图形放置在文档中,而无需将其链接到原始

function myFunction() {
  var doc = DocumentApp.openById('documentID');
  var drawing = DriveApp.getFileById('drawingID');

  var drawingId = drawing.getId();
  var image = Drive.Files.get(drawingId);
  var imageBlob = getBlob(image.exportLinks['image/jpeg']);

  var body = doc.getBody();
  body.appendImage(imageBlob);
}

function getBlob(url) {
  var response = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
    }
  });
  return response.getBlob();
}

1 个答案:

答案 0 :(得分:0)

不幸的是,目前尚不可能这样做。

我找到了一种解决方法,包括通过添加更新功能来更改文档的脚本。

function main(e) 
{
  var doc = DocumentApp.getActiveDocument();
  var allImage = doc.getBody().getImages();
  if(allImage.length != 0)
  {
    for(var i = 0; i < allImage.length; i++)
    {
      update(doc, allImage[i]);
    }
  }
}

function update(doc, image)
{
  var drawingUrl = image.getLinkUrl();

  if(drawingUrl != null)
  {
    var drawing = DriveApp.getFileById(getIdFromUrl(drawingUrl));
    var drawingId = drawing.getId();

    image.removeFromParent();

    var newImage = Drive.Files.get(drawingId);
    var imageBlob = getBlob(newImage.exportLinks['image/jpeg']);

    var body = doc.getBody();
    body.appendImage(imageBlob).setLinkUrl(drawingUrl);
  }
}

function getIdFromUrl(url) 
{ 

  return url.match(/[-\w]{25,}/); 
}

function getBlob(url) {
  var response = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
    }
  });
  return response.getBlob();
}