我正在为Google Docs编写脚本。 我想获得文档中所有标题的位置。然后我想在文档中创建一个包含这些标题的其他链接列表。我不想使用TABLE_OF_CONTENTS。 我想在Word 2010中创建相似性导航面板(link)。仅限Google文档。 我如何获得该职位,或创建文档中所有标题的链接并将其放在侧边栏中? 谢谢您的帮助!祝你有愉快的一天。
答案 0 :(得分:9)
由于Google已采用此功能并于2016年3月3日发布,因此您不再需要使用第三方附加组件。
只需选中Tools > Document outline
选项,即可开始使用。
答案 1 :(得分:2)
到目前为止,这个答案可能已经过时了,但Google Docs中有一个Add in允许您这样做。只需点击" Add-Ons"并搜索"目录"或"文档导航器" - 您将找到添加项,这将生成您所描述的导航栏。那里可能还有其他的附加功能......
答案 2 :(得分:1)
见this example。这是一个带有脚本的Google Doc,用于创建带有目录的侧边栏。
以下是获取标题列表的代码。链接的文档在其脚本编辑器中包含所有内容。
//Recursively get subsections
function getHeadersFromParagraphs(paragraphs, limit, starter){
var headers = [], header, hType, level, start, result,
paragraph,
heading,
i,
h1 = DocumentApp.ParagraphHeading.HEADING1,
h2 = DocumentApp.ParagraphHeading.HEADING2,
h3 = DocumentApp.ParagraphHeading.HEADING3,
h4 = DocumentApp.ParagraphHeading.HEADING4,
h5 = DocumentApp.ParagraphHeading.HEADING5,
h6 = DocumentApp.ParagraphHeading.HEADING6,
hTypes = [h1,h2,h3,h4,h5,h6];
//Loop through all paragraphs
start = starter ? starter.id+1 : 0;
for(i = start; i < paragraphs.length; i += 1){
paragraph = paragraphs[i];
heading = paragraph.getHeading();
level = hTypes.indexOf(heading);
if(level > -1 && level < limit){
if(paragraph.getText() == "") continue;
if(starter && level <= starter.level) { i--; break; }
header = { name : paragraph.getText(), id : i, level : level };
result = getHeadersFromParagraphs(paragraphs, limit, header);
i = result.index;
header.subheaders = result.headers;
headers.push(header);
}
}
return { headers : headers, index : i }
}
//Initiate parsing of headers. By default, limit to Heading 1.
function pullHeaders(level){
level = level || 1;
var body = DocumentApp.getActiveDocument().getBody(),
paragraphs = body.getParagraphs();
var result = getHeadersFromParagraphs(paragraphs, level);
return JSON.stringify(result.headers);
}