XML Service

XML Service

This service allows scripts to parse, navigate, and programmatically create XML documents.

// Log the title and labels for the first page of blog posts on
// Google's The Keyword blog.
function parseXml() {
  let url = 'https://blog.google/rss/';
  let xml = UrlFetchApp.fetch(url).getContentText();
  let document = XmlService.parse(xml);
  let root = document.getRootElement();

  let channel = root.getChild('channel');
  let items = channel.getChildren('item');
  items.forEach(item => {
    let title = item.getChild('title').getText();
    let categories = item.getChildren('category');
    let labels = categories.map(category => category.getText());
    console.log('%s (%s)', title, labels.join(', '));
  });
}

// Create and log an XML representation of first 10 threads in your Gmail inbox.
function createXml() {
  let root = XmlService.createElement('threads');
  let threads = GmailApp.getInboxThreads()
  threads = threads.slice(0,10); // Just the first 10
  threads.forEach(thread => {
    let child = XmlService.createElement('thread')
        .setAttribute('messageCount', thread.getMessageCount())
        .setAttribute('isUnread', thread.isUnread())
        .setText(thread.getFirstMessageSubject());
    root.addContent(child);
  });
  let document = XmlService.createDocument(root);
  let xml = XmlService.getPrettyFormat().format(document);
  console.log(xml);
}

Classes

Name Brief description
Attribute A representation of an XML attribute.
Cdata A representation of an XML CDATASection node.
Comment A representation of an XML Comment node.
Content A representation of a generic XML node.
ContentType An enumeration representing the types of XML content nodes.
DocType A representation of an XML DocumentType node.
Document A representation of an XML document.
Element A representation of an XML Element node.
EntityRef A representation of an XML EntityReference node.
Format A formatter for outputting an XML document, with three pre-defined formats that can be further customized.
Namespace A representation of an XML namespace.
ProcessingInstruction A representation of an XML ProcessingInstruction node.
Text A representation of an XML Text node.
XmlService This service allows scripts to parse, navigate, and programmatically create XML documents.

Attribute

Methods

Method Return type Brief description
String Gets the local name of the attribute.
Namespace Gets the namespace for the attribute.
String Gets the value of the attribute.
Attribute Sets the local name of the attribute.
Attribute Sets the namespace for the attribute.
Attribute Sets the value of the attribute.

Cdata

Methods

Method Return type Brief description
Text Appends the given text to any content that already exists in the node.
Content Detaches the node from its parent Element node.
Element Gets the node's parent Element node.
String Gets the text value of the Text node.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.
Text Sets the text value of the Text node.

Comment

Methods

Method Return type Brief description
Content Detaches the node from its parent Element node.
Element Gets the node's parent Element node.
String Gets the text value of the Comment node.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.
Comment Sets the text value of the Comment node.

Content

Methods

Method Return type Brief description
Cdata Casts the node as a CDATASection node for the purposes of autocomplete.
Comment Casts the node as a Comment node for the purposes of autocomplete.
DocType Casts the node as a DocumentType node for the purposes of autocomplete.
Element Casts the node as an Element node for the purposes of autocomplete.
EntityRef Casts the node as a EntityReference node for the purposes of autocomplete.
ProcessingInstruction Casts the node as a ProcessingInstruction node for the purposes of autocomplete.
Text Casts the node as a Text node for the purposes of autocomplete.
Content Detaches the node from its parent Element node.
Element Gets the node's parent Element node.
ContentType Gets the node's content type.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.

ContentType

Properties

Property Type Description
CDATA
Enum An XML CDATASection node.
COMMENT
Enum An XML Comment node.
DOCTYPE
Enum An XML DocumentType node.
ELEMENT
Enum An XML Element node.
ENTITYREF
Enum An XML EntityReference node.
PROCESSINGINSTRUCTION
Enum An XML ProcessingInstruction node.
TEXT
Enum An XML Text node.

DocType

Methods

Method Return type Brief description
Content Detaches the node from its parent Element node.
String Gets the name of the root Element node specified in the DocType declaration.
String Gets the internal subset data for the DocumentType node.
Element Gets the node's parent Element node.
String Gets the public ID of the external subset data for the DocumentType node.
String Gets the system ID of the external subset data for the DocumentType node.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.
DocType Sets the name of the root Element node to specify in the DocType declaration.
DocType Sets the internal subset data for the DocumentType node.
DocType Sets the public ID of the external subset data for the DocumentType node.
DocType Sets the system ID of the external subset data for the DocumentType node.

Document

Methods

Method Return type Brief description
Document Appends the given node to the end of the document.
Document Inserts the given node at the given index among all nodes that are immediate children of the document.
Content[] Creates unattached copies of all nodes that are immediate children of the document.
Element Detaches and returns the document's root Element node.
Content[] Gets all nodes that are immediate children of the document.
Content Gets the node at the given index among all nodes that are immediate children of the document.
Integer Gets the number of nodes that are immediate children of the document.
Content[] Gets all nodes that are direct or indirect children of the document, in the order they appear in the document.
DocType Gets the document's DocType declaration.
Element Gets the document's root Element node.
Boolean Determines whether the document has a root Element node.
Content[] Removes all nodes that are immediate children of the document.
Boolean Removes the given node, if the node is an immediate child of the document.
Content Removes the node at the given index among all nodes that are immediate children of the document.
Document Sets the document's DocType declaration.
Document Sets the document's root Element node.

Element

Methods

Method Return type Brief description
Element Appends the given node as the last child of the Element node.
Element Inserts the given node at the given index among all nodes that are immediate children of the Element node.
Content[] Creates unattached copies of all nodes that are immediate children of the {@code Element} node.
Content Detaches the node from its parent Element node.
Content[] Gets all nodes that are immediate children of the {@code Element} node.
Attribute Gets the attribute for this Element node with the given name and no namespace.
Attribute Gets the attribute for this Element node with the given name and namespace.
Attribute[] Gets all attributes for this Element node, in the order they appear in the document.
Element Gets the first Element node with the given name and no namespace that is an immediate child of this Element node.
Element Gets the first Element node with the given name and namespace that is an immediate child of this Element node.
String Gets the text value of the node with the given name and no namespace, if the node is an immediate child of the Element node.
String Gets the text value of the node with the given name and namespace, if the node is an immediate child of the Element node.
Element[] Gets all Element nodes that are immediate children of this Element node, in the order they appear in the document.
Element[] Gets all Element nodes with the given name and no namespace that are immediate children of this Element node, in the order they appear in the document.
Element[] Gets all Element nodes with the given name and namespace that are immediate children of this Element node, in the order they appear in the document.
Content Gets the node at the given index among all nodes that are immediate children of the {@code Element} node.
Integer Gets the number of nodes that are immediate children of the {@code Element} node.
Content[] Gets all nodes that are direct or indirect children of the {@code Element} node, in the order they appear in the document.
Document Gets the XML document that contains the {@code Element} node.
String Gets the local name of the Element node.
Namespace Gets the namespace for the Element node.
Namespace Gets the namespace with the given prefix for the Element node.
Element Gets the node's parent Element node.
String Gets the local name and namespace prefix of the Element node, in the form [namespacePrefix]:[localName] .
String Gets the text value of the Element node.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.
Boolean Determines whether this Element node is a direct or indirect parent of a given Element node.
Boolean Determines whether the Element node is the document's root node.
Boolean Removes the given attribute for this Element node, if such an attribute exists.
Boolean Removes the attribute for this Element node with the given name and no namespace, if such an attribute exists.
Boolean Removes the attribute for this Element node with the given name and namespace, if such an attribute exists.
Content[] Removes all nodes that are immediate children of the {@code Element} node.
Boolean Removes the given node, if the node is an immediate child of the {@code Element} node.
Content Removes the node at the given index among all nodes that are immediate children of the {@code Element} node.
Element Sets the given attribute for this Element node.
Element Sets the attribute for this Element node with the given name, value, and no namespace.
Element Sets the attribute for this Element node with the given name, value, and namespace.
Element Sets the local name of the Element node.
Element Sets the namespace for the Element node.
Element Sets the text value of the Element node.

EntityRef

Methods

Method Return type Brief description
Content Detaches the node from its parent Element node.
String Gets the name of the EntityReference node.
Element Gets the node's parent Element node.
String Gets the public ID of the EntityReference node.
String Gets the system ID of the EntityReference node.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.
EntityRef Sets the name of the EntityReference node.
EntityRef Sets the public ID of the EntityReference node.
EntityRef Sets the system ID of the EntityReference node.

Format

Methods

Method Return type Brief description
String Outputs the given Document as a formatted string.
String Outputs the given Element node as a formatted string.
Format Sets the character encoding that the formatter should use.
Format Sets the string used to indent child nodes relative to their parents.
Format Sets the string to insert whenever the formatter would normally insert a line break.
Format Sets whether the formatter should omit the XML declaration, such as <?xml version="1.0" encoding="UTF-8"?> .
Format Sets whether the formatter should omit the encoding in the XML declaration, such as the encoding field in <?xml version="1.0" encoding="UTF-8"?> .

Namespace

Methods

Method Return type Brief description
String Gets the prefix for the namespace.
String Gets the URI for the namespace.

ProcessingInstruction

Methods

Method Return type Brief description
Content Detaches the node from its parent Element node.
String Gets the raw data for every instruction in the ProcessingInstruction node.
Element Gets the node's parent Element node.
String Gets the target for the ProcessingInstruction node.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.

Text

Methods

Method Return type Brief description
Text Appends the given text to any content that already exists in the node.
Content Detaches the node from its parent Element node.
Element Gets the node's parent Element node.
String Gets the text value of the Text node.
String Gets the text value of all nodes that are direct or indirect children of the node, in the order they appear in the document.
Text Sets the text value of the Text node.

XmlService

Properties

Property Type Description
ContentTypes
ContentType An enumeration representing the types of XML content nodes.

Methods

Method Return type Brief description
Cdata Creates an unattached CDATASection node with the given value.
Comment Creates an unattached Comment node with the given value.
DocType Creates an unattached DocumentType node for the root Element node with the given name.
DocType Creates an unattached DocumentType node for the root Element node with the given name, and the given system ID for the external subset data.
DocType Creates an unattached DocumentType node for the root Element node with the given name, and the given public ID and system ID for the external subset data.
Document Creates an empty XML document.
Document Creates an XML document with the given root Element node.
Element Creates an unattached Element node with the given local name and no namespace.
Element Creates an unattached Element node with the given local name and namespace.
Text Creates an unattached Text node with the given value.
Format Creates a Format object for outputting a compact XML document.
Namespace Creates a Namespace with the given URI.
Namespace Creates a Namespace with the given prefix and URI.
Namespace Creates a Namespace that represents the absence of a real namespace.
Format Creates a Format object for outputting a human-readable XML document.
Format Creates a Format object for outputting a raw XML document.
Namespace Creates a Namespace with the standard xml prefix.
Document Creates an Document from the given XML, without validating the XML.