【问题标题】:Insert a link to a drawing in a document using apps script使用应用程序脚本在文档中插入指向绘图的链接
【发布时间】:2019-02-14 09:00:24
【问题描述】:

我正在尝试在 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();
}

【问题讨论】:

  • 试试var img=body.appendImage(imageBlob);img.setLinkUrl(image.exportLinks['image/jpeg'])
  • 感谢您的回复。图片已正确链接到绘图,但对原始绘图的更改未反映在 Google 文档中的绘图中
  • @Walid Jabari 我无法理解您当前的问题。我可以问你更多关于changes to the original drawing aren't reflected in the drawing that's in the google document的信息吗?
  • @Tanaike 因此,基本上,如果您使用标准方法(帖子中描述的方法)将图纸插入文档,您可以选择将原始图纸链接到您正在插入的图纸。这样,如果您对原始图纸进行任何更改,它们将应用于文档上的图纸。我正在尝试使用应用程序脚本来模拟它
  • @Walid Jabari 感谢您的回复。我能理解你想做什么。不幸的是,在当前阶段,还没有将绘图文件放入 Class DocumentApp 和 Docs API 的方法。所以我认为在现阶段,它还不能实现你想要做的事情。很抱歉,我找不到实现它的解决方法。

标签: google-apps-script google-docs


【解决方案1】:

很遗憾,目前还无法做到这一点。

我找到了一个解决方法,其中包括通过添加更新函数来更改文档的脚本。

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();
}

【讨论】:

  • 是的,该函数将更新文档中包含外部文件链接的每张图片
猜你喜欢
  • 2022-07-12
  • 2019-07-14
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多