Как устанавливается плагин - на компьютер / браузер, на документ, на пользователя в документах Google? Что произойдет, если другие захотят отредактировать документ?
Сибилла Питерс,
1
К сожалению, этот плагин не работает. Не удается установить из-за проблемы с авторизацией. Другие получают такой же результат?
gavdotnet
1
@gavdotnet У меня это сработало, поэтому они, должно быть, исправили это.
Обновление 2: теперь обрабатываются пустые заголовки и пустые строки благодаря 2 запросам на перенос на github.
Обновление 3: github и код ниже исправлены для обработки новой идентификации ЗАГОЛОВКИ ДОКУМЕНТОВ.
Я изменил сценарий, упомянутый Микко Отамаа, и создал сценарий Google Apps, который добавляет меню документа инструментов заголовков, которое позволяет:
авто номер Заголовок
очистить номера заголовков
Как автоматически пронумеровать заголовки документов Google:
Откройте документ> Инструменты> Редактор скриптов ...
Начать пустой проект
Вставьте код ниже и сохраните с вашим предпочтительным именем
Выберите Выполнить> onOpen и авторизуйте скрипт в первый раз.
Выберите Выполнить> onOpen.
Перейдите в свой документ и попробуйте функции в созданном настраиваемом меню инструментов заголовков .
~~ Отказ от ответственности: у вас могут быть проблемы с пустыми заголовками .. Но вы всегда можете исправить их и снова запустить действие. ~~
Код для копирования и вставки:
functiononOpen() {
DocumentApp.getUi().createMenu('Headings Tools')
.addItem('Auto Number Headings', 'numberHeadingsAdd')
.addItem('Clear Heading Numbers', 'numberHeadingsClear')
.addToUi();
}
functionnumberHeadingsAdd(){
numberHeadings(true);
}
functionnumberHeadingsClear(){
numberHeadings(false);
}
functionnumberHeadings(add){
vardocument = 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 headingsif (!type.match(/HEADING\d/)) {
continue;
}
// exclude empty headings (e.g. page breaks generate these)if( text.match(/^\s*$/)){
continue;
}
if (add == true) {
var level = newRegExp(/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]+/, ''));
}
}
}
Я рад узнать, что @IvanCachicatari я планирую сделать улучшенную версию для запуска в качестве дополнения, поэтому нам не нужно каждый раз открывать редактор сценариев ...
@MrGravity способ добиться этого - преобразовать сценарий в надстройку для Google Диска. Я планирую это сделать, но сейчас у меня нет времени ..
Лучано
1
Вот это да! Я чувствую, что снова 90-е. Действительно ли нам нужен сценарий для выполнения такой простой задачи, как нумерация заголовков? Теперь я понимаю, почему существуют все эти программные инициативы - нашим детям действительно нужно знать свой JavaScript, чтобы писать любой рабочий документ; P
Януш Сконечны
1
@Luciano, это вроде работает. Я наблюдаю странную вещь. Если я вырезал и вставил код из git, я получил один из двух результатов: ничего не происходит или ошибка синтаксического анализа регулярного выражения в строке 38. Чтобы заставить его работать, мне нужно 1) вырезать и вставить код git из 10/16 / 17, 2) сохранить, 3) вручную внести изменения, предложенные nsof, 4) сохранить и запустить, как указано выше. Я заметил небольшую разницу: строка 38 в вашей версии убирает скобки вокруг \ d.
Джинджер МакМюррей,
10
Все, что вам нужно сделать, это скопировать / вставить предыдущие заголовки.
Если вы копируете и вставляете любой элемент нумерованного списка, он сохраняет свою нумерацию и автоматически меняет номер в соответствующих случаях.
Насколько прагматично, это решение недооценивается.
Somethis
Действительно, это самое простое, РОДСТВЕННОЕ решение (если вы все еще на этапе редактирования)!
Демис
1
Насколько я могу судить, это требует, чтобы вы делали отступ на каждом уровне заголовка, на который вы спускаетесь. Так ли это или есть другой способ?
gavdotnet
1
Проблема в том, что вам нужно скопировать заголовки из одного и того же документа . Если вы скопируете «заголовок 1», например, из другого html-документа, несмотря на сохранение форматирования «заголовок x», он не будет иметь номера. Это означает, что если у вас уже есть другой документ с кучей текста, который вы хотите скопировать и вставить, ваше решение потребует слишком много ручной работы. Или на самом деле: это то же самое, если у вас уже есть документ, и вы просто хотите, чтобы в нем были перечислены заголовки.
Hi-Angel
5
С момента написания (апрель 2020 г.) многие предлагаемые приложения устарели или больше не работают.
Я нашел работающим метод для нумерованных заголовков:
Перейти в Получить дополнения
Найдите и установите инструменты Markdown
В Markdown Tools есть возможность использовать пронумерованные заголовки. Прекрасно работает со встроенным Оглавлением Google.
Чтобы создать оглавление:
Перейдите в пункт меню « Вставить» и выберите «Оглавление».
Это очень полезно! Я бы не подумал, что простая функция нумерации оглавления будет в инструменте уценки, но он отлично работает, спасибо!
prrao
1
Я написал версию для заголовков уценки, но она также поддерживает простые номера заголовков. Источник находится здесь https://github.com/jordan2175/markdown-tools и доступен через G Suite Marketplace как «Инструменты разметки».
Привет @ jordan2175, надстройка отличная. Было бы хорошо, если бы в создаваемом оглавлении были номера страниц.
Дэвид Лопес,
0
Ранее упомянутое дополнение «Оглавление» на сегодняшний день недоступно. Я установил тот, который называется « Инструменты разметки ». После установки вы должны применить собственные стили заголовков, а затем перейти в « Дополнения»> «Инструменты разметки»> «Номера заголовков» и выбрать желаемый стиль нумерации, который будет применен ко всем заголовкам в документе.
Ответы:
Если вам нужно что-то более легкое, есть надстройка Google под названием «Оглавление» , которая позволит вам пронумеровать заголовки.
Чтобы установить это дополнение:
После этого на боковой панели должно появиться оглавление. Щелкните меню «Формат номеров заголовков» и выберите «1.2.3».
Вы должны переформатировать свой документ, если у вас есть старый, чтобы «обновить» числа, но на самом деле надстройка работает очень хорошо.
Я видел ответ на этом форуме .
источник
Обновление: теперь доступно в github .
Обновление 2: теперь обрабатываются пустые заголовки и пустые строки благодаря 2 запросам на перенос на github.
Обновление 3: github и код ниже исправлены для обработки новой идентификации ЗАГОЛОВКИ ДОКУМЕНТОВ.
Я изменил сценарий, упомянутый Микко Отамаа, и создал сценарий 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 г.) многие предлагаемые приложения устарели или больше не работают.
Я нашел работающим метод для нумерованных заголовков:
В Markdown Tools есть возможность использовать пронумерованные заголовки. Прекрасно работает со встроенным Оглавлением Google.
Чтобы создать оглавление:
источник
Я написал версию для заголовков уценки, но она также поддерживает простые номера заголовков. Источник находится здесь https://github.com/jordan2175/markdown-tools и доступен через G Suite Marketplace как «Инструменты разметки».
источник
Ранее упомянутое дополнение «Оглавление» на сегодняшний день недоступно. Я установил тот, который называется « Инструменты разметки ». После установки вы должны применить собственные стили заголовков, а затем перейти в « Дополнения»> «Инструменты разметки»> «Номера заголовков» и выбрать желаемый стиль нумерации, который будет применен ко всем заголовкам в документе.
источник