【发布时间】:2012-09-05 12:39:17
【问题描述】:
是否可以对 Google Docs/Drive 文档中的标题进行编号?
【问题讨论】:
-
怎么还不原生支持?
标签: google-apps-script google-docs google-drive-api
是否可以对 Google Docs/Drive 文档中的标题进行编号?
【问题讨论】:
标签: google-apps-script google-docs google-drive-api
如果您想要更简单的内容,可以使用名为 "Table of Contents" 的 Google 插件来为标题编号。
要安装此插件:
然后您的目录应该出现在您的侧边栏中。单击标题编号格式菜单,然后选择 1.2.3
如果您有旧文档,则必须重新格式化您的文档才能“刷新”数字,但实际上插件运行良好。
【讨论】:
更新:现已在 github 中提供。
更新 2: 由于 github 上的 2 个拉取请求,现在可以处理空标题和空行。
更新 3: github 和下面的代码已修复以处理新的 Docs HEADING 标识。
我修改了script mentioned by Mikko Ohtamaa 并创建了一个 Google Apps 脚本,它添加了一个标题工具文档菜单,让您可以:
如何为 Google 文档标题自动编号:
~~免责声明:您可能会遇到空标题的问题。但您可以随时修复它们并再次执行操作。~~
要复制和粘贴的代码:
function onOpen() {
DocumentApp.getUi().createMenu('Headings Tools')
.addItem('Auto Number Headings', 'numberHeadingsAdd')
.addItem('Clear Heading Numbers', 'numberHeadingsClear')
.addToUi();
}
function numberHeadingsAdd(){
numberHeadings(true);
}
function numberHeadingsClear(){
numberHeadings(false);
}
function numberHeadings(add){
var document = DocumentApp.getActiveDocument();
var body = document.getBody();
var paragraphs = document.getParagraphs();
var numbers = [0,0,0,0,0,0,0];
for (var i in paragraphs) {
var element = paragraphs[i];
var text = element.getText()+'';
var type = element.getHeading()+'';
// exclude everything but headings
if (!type.match(/HEADING\d/)) {
continue;
}
// exclude empty headings (e.g. page breaks generate these)
if( text.match(/^\s*$/)){
continue;
}
if (add == true) {
var level = new RegExp(/HEADING(\d)/).exec(type)[1];
var numbering = '';
numbers[level]++;
for (var currentLevel = 1; currentLevel <= 6; currentLevel++) {
if (currentLevel <= level) {
numbering += numbers[currentLevel] + '.';
} else {
numbers[currentLevel] = 0;
}
}
Logger.log(text);
var newText = numbering + ' ' + text.replace(/^[0-9\.\s]+/, '');
element.setText(newText);
Logger.log([newText]);
} else {
Logger.log(text);
element.setText(text.replace(/^[0-9\.\s]+/, ''));
}
}
}
【讨论】:
自撰写(2020 年 4 月)以来,许多提议的应用都已过时或不再工作。
我发现编号标题的方法如下:
Markdown 工具有一个使用编号标题的选项。与 Google 的内置目录相得益彰。
创建目录:
【讨论】:
您所要做的就是复制/粘贴以前的标题。
如果您复制并粘贴编号列表的任何项目,则它会保留其编号,并在相关情况下自动更改编号。
【讨论】:
我写了一个做markdown标题的版本,但它也支持普通的标题数字。源代码在此处https://github.com/jordan2175/markdown-tools,可通过 G Suite Marketplace 作为“Markdown Tools”获得。
【讨论】:
之前提到的插件“目录”从今天开始不可用。 我安装了一个名为“Markdown Tools”的 安装后,您必须应用原生标题样式,然后转到 Add-Ons>Markdown 工具 >标题编号 并选择将应用于文档中所有标题的所需编号样式。
【讨论】: