Вставить ссылку на чертеж в документе с помощью скрипта apps - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь вставить ссылку на рисунок в Google Doc.

Я хочу, чтобы код дал тот же результат, что и следующие входные данные:

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 голосов
/ 15 февраля 2019

К сожалению, сейчас это невозможно сделать.

Я нашел работу, которая заключается в изменении сценария документа путем добавления функции обновления.

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