Skip to content

Instantly share code, notes, and snippets.

@tanaikech
Created August 20, 2018 01:03
Show Gist options
  • Star 39 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save tanaikech/f84831455dea5c394e48caaee0058b26 to your computer and use it in GitHub Desktop.
Save tanaikech/f84831455dea5c394e48caaee0058b26 to your computer and use it in GitHub Desktop.
Replacing Text to Image for Google Document using Google Apps Script

Replacing Text to Image for Google Document using Google Apps Script

This is a sample script for replacing text to image for Google Document using Google Apps Script (GAS). There is a method for replacing text to text at Class Text of DocumentApp. But there are not methods for replacing text to image. So I created this sample script.

Demo :

This sample image was created by k3-studio.

Usage :

replaceTextToImage(body, replaceText, image, width);
  • body : body of document. You can set by DocumentApp.getActiveDocument().getBody() and DocumentApp.openById(documentId).getBody().
  • replaceText : string you want to replace.
  • image : blob of image you want to replace.
  • width : Width of replaced image. The aspect ratio is constant. The unit is pixels. If you don't use this, the original size is used.

Script :

In this sample script, all strings of "sample" in the document are replaced to image with the file ID of imageFileId.

function myFunction() {
  var replaceTextToImage = function(body, searchText, image, width) {
    var next = body.findText(searchText);
    if (!next) return;
    var r = next.getElement();
    r.asText().setText("");
    var img = r.getParent().asParagraph().insertInlineImage(0, image);
    if (width && typeof width == "number") {
      var w = img.getWidth();
      var h = img.getHeight();
      img.setWidth(width);
      img.setHeight(width * h / w);
    }
    return next;
  };

  var documentId = "### Document ID ###";
  var replaceText = "sample";
  var imageFileId = "### File ID of image ###";
  var body = DocumentApp.openById(documentId).getBody();
  var image = DriveApp.getFileById(imageFileId).getBlob();
  do {
    var next = replaceTextToImage(body, replaceText, image, 200);
  } while (next);
}

References :

@jor77
Copy link

jor77 commented Oct 15, 2022

Hi, would it be possible to replace a drawing instead of text?

@K01571N3N
Copy link

Hi! I got this problem with my project.

"Exception: Unexpected error while getting the method or property getBlob on object DriveApp.File."

Document and image are both in my drive. I have tried that image as a png and jpg formats.

What is causing this problem? thanks!

@ludofigueiredo
Copy link

Thank you very much. Spend time with GPT to finally get back to basics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment