The advanced Docs service allows you to use the Google Docs API in Apps Script. Much like Apps Script's built-in Docs service, this API allows scripts to read, edit, and format content in Google Docs. In most cases the built-in service is easier to use, but this advanced service provides a few extra features.
Reference
For detailed information on this service, see the reference documentation for the Docs API. Like all advanced services in Apps Script, the advanced Docs service uses the same objects, methods, and parameters as the public API. For more information, see How method signatures are determined.
To report issues and find other support, see the Docs API support guide.
Sample code
The sample code below uses version 1 of the API.
Create document
This sample creates a new document.
Find and replace text
This sample finds and replaces pairs of text across all tabs in a document. This can be useful when replacing placeholders in a copy of a template document with values from a database.
Insert and style text
This sample inserts new text at the start of the first tab in the document and
styles it with a specific font and size. Note that when possible you should
batch together multiple operations into a single batchUpdate
call for
efficiency.
Read first paragraph
This sample logs the text of the first paragraph of the first tab in the document. Because of the structured nature of paragraphs in the Docs API, this involves combining the text of multiple sub-elements.
Best Practices
Batch Updates
When using the advanced Docs service, combine multiple requests in an array
rather than calling batchUpdate
in a loop.
Don't — Call batchUpdate
in a loop.
var textToReplace = ['foo', 'bar'];
for (var i = 0; i < textToReplace.length; i++) {
Docs.Documents.batchUpdate({
requests: [{
replaceAllText: ...
}]
}, docId);
}
Do — Call batchUpdate
with an array of
updates.
var requests = [];
var textToReplace = ['foo', 'bar'];
for (var i = 0; i < textToReplace.length; i++) {
requests.push({ replaceAllText: ... });
}
Docs.Documents.batchUpdate({
requests: requests
}, docId);