Description
This is a Google Apps Script for creating the tree structure from headings in Google Documents.
Usage
In order to test this script, please do the following steps.
1. Sample Document
Create a sample Document as follows.
2. Sample script
Open the script editor and copy and paste the following script.
In this script, Document service (DocumentApp) is used.
function sample1() {
const headTypes = [
"TITLE",
"HEADING1",
"HEADING2",
"HEADING3",
"HEADING4",
"HEADING5",
"HEADING6",
];
const body = DocumentApp.getActiveDocument().getBody();
const res = body
.getParagraphs()
.reduce((ar, p) => {
const idx = headTypes.indexOf(p.getHeading().toString());
if (idx > -1) {
ar.push(Array(idx).fill(" ").join("") + p.getText());
}
return ar;
}, [])
.join("\n");
console.log(res);
}
As another approach, the following script uses Docs API. Please enable Docs API at Advanced Google services. Ref
function sample2() {
const headTypes = [
"TITLE",
"HEADING_1",
"HEADING_2",
"HEADING_3",
"HEADING_4",
"HEADING_5",
"HEADING_6",
];
const documentId = DocumentApp.getActiveDocument().getId();
const obj = Docs.Documents.get(documentId).body.content;
const res = obj
.reduce((ar, e) => {
if (
e.paragraph &&
e.paragraph.paragraphStyle &&
e.paragraph.paragraphStyle.namedStyleType
) {
const idx = headTypes.indexOf(
e.paragraph.paragraphStyle.namedStyleType
);
if (idx > -1) {
ar.push(
Array(idx).fill(" ").join("") +
e.paragraph.elements[0].textRun.content.trim()
);
}
}
return ar;
}, [])
.join("\n");
console.log(res);
}
When you run the functions sample1
and sample2
, the following result is obtained in the console.
Title1A
Heading1A
Heading2A
Heading3A
Heading4A
Heading5A
Heading6A
Title1B
Heading1B
Heading2B
Heading3B
Heading4B
Heading5B
Heading6B