0

I am trying to insert a webp format image into a table in a document - however it's giving me an error. When I try with a jpg file, I am able to insert the image at the top of the file (I don't know how to insert inside the table - I have {image1} text in the position where I want to insert the image.)

My code is, which works fine:

  var product_image = UrlFetchApp.fetch("https://laz-img-cdn.alicdn.com/images/ims-web/TB1HKyxaMFY.1VjSZFqXXadbXXa.png").getBlob();
  body.replaceText('{image1}', "img");
  body.insertImage(0, product_image);

But when I change the URL to a webp image, it gives mean an invalid data error. For examples this code:

  var product_image = UrlFetchApp.fetch("https://my-test-11.slatic.net/original/ed9960ec66acc822e34fdeac570211e0.jpg_340x340q80.jpg_.webp").getBlob();

2 Answers 2

2

I don't think you can do this, see documentation:

contentType String The MIME type to convert to. For most blobs, 'application/pdf' is the only valid option. For images in BMP, GIF, JPEG, or PNG format, any of 'image/bmp', 'image/gif', 'image/jpeg', or 'image/png' are also valid.

6
  • This works perfectly with png files. If I am doing it wrong, how do I insert an image (preferably webp) file into a document?
    – m mustho
    Nov 8, 2020 at 11:20
  • @m_mustho : webp is not supported by Google Documents Nov 8, 2020 at 16:31
  • Thank you. It's strange that the inventor of this technology, Google, is not supporting it's own creation. Appreciate your response.
    – m mustho
    Nov 8, 2020 at 16:41
  • @mmustho Please read What should I do when someone answers my question? Nov 8, 2020 at 18:53
  • Google still has a lot of work to do for people and developers ... maybe the webp file format will be integrated in the future or is in the testing area. Nov 10, 2020 at 21:45
2

This answer is not offered as an explanation of how to insert a webp image into a table in Google Docs. Cătălin George Feștilă has already answered that question.

You mentioned, in passing, that you didn't know how to "insert [the image] inside the table".

Google Script - Insert image in a Google Doc Table from StackOverflow addresses this issue specifically. I've merely adapted it to your data.

FWIW, I deliberately added a second table to demonstrate that the script would only insert the image where/when it found "{image1}". So, it's unnecessary to know which table/row/column to use; the script will handle this because as it loops through the tables looking for a match on the image variable.


function myFunction() {
  
  // get the image
  var product_image = UrlFetchApp.fetch("https://laz-img-cdn.alicdn.com/images/ims-web/TB1HKyxaMFY.1VjSZFqXXadbXXa.png").getBlob();
  
  // Get the document to which this script is bound.
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var tables = body.getTables();
  // Logger.log(tables); // DEBUG
  
  for (var k in tables){
   var table = tables[k];
   // Logger.log("DEBUG: table#="+k)
   var tablerows=table.getNumRows();
     for ( var row = 0; row < tablerows; ++row ) {
       var tablerow = table.getRow(row);
       // Logger.log("DEBUG: row#="+row)
        for ( var cell=0; cell < tablerow.getNumCells(); ++cell) {
            // Logger.log("DEBUG: cell#"+cell);
            var celltext = tablerow.getChild(cell).getText();
            // Logger.log(DEBUG: celltext);
            if(celltext == "{image1}") {
              table.replaceText("{image1}", "");
              table.getCell(row, cell).insertImage(0, product_image);
            }
         }
      }
    }
}

Before

Before


After

After

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.