Получить URL-адрес изображения из идентифицированной ячейки в таблице в Документах и ​​заменить на изображение - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь добавить изображение из пользовательского ввода (который является URL для изображения, расположенного на их диске).Я могу добавить и заменить URL-адрес, как только идентификатор изображения будет идентифицирован, но я не могу изолировать идентификатор от URL-адреса в моем коде.

function getMyImage() {
  var ui = DocumentApp.getUi();
  //Creates a prompt for the user so that the row with keys can be found
  var response = ui.prompt('In what row are the pictures or links found? (Please indicate a number)');
  //Converts response to int and removes one to fit indexing 
  var rowNum = response.getResponseText() - 1

  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  //Gets all tables in document
  var tables = body.getTables();
  //Passes through each table
  for (var i = 0; i < tables.length; i++){
    //Using this cell in particular determined by prompt result and 1, since DocAppener
    var idCell = tables[i].getRow(rowNum).getCell(1);
    //**Up to here everything works**

    var url = idCell.getText();
    function getIdFromUrl(url) { 
      return url.match(/[-\w]{25,}/); 
    }  
    //Find the image
    var image = DriveApp.getFileById(url)

    //**Past here everything works** 

    //Remove the text in the cell and replace it with image
    var appendedImage = idCell.clear().appendImage(image.getBlob());
    //Set height and width to create a standard for all images
    var iHeight = appendedImage.getHeight()
    var Ratio = iHeight/300
    var iWidth = appendedImage.getWidth()/Ratio
    //Calling height and width as well as set url
    appendedImage.setHeight(300).setWidth(iWidth).setLinkUrl(imageurl)}
}

Это мой документ, о котором идет речь.https://docs.google.com/document/d/1FfzIm9GFhftgsTp7ZEd2l7ZywGVn0yVWZHaQFTUdHvk/edit?usp=sharing

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, что основная проблема в том, что вы, кажется, не вызываете свою getIdFromUrl функцию, а просто вызываете DriveApp.getFileById(url).

Я думаю, что вы хотите сделать это:

var url = idCell.getText();
function getIdFromUrl(url) { 
  return url.match(/[-\w]{25,}/); 
}

var id = getIdFromUrl(url)[0];  // <-- Add this

//Find the image
var image = DriveApp.getFileById(id)  // <-- Get id

getIdFromUrl, кажется, возвращает список с одним элементом, поэтому я беру нулевой индекс результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...