Могу ли я распечатать дату или сохранить дату в документах Google?

8

Я создал текстовый документ, который будет использоваться многими людьми (таблица стилей для писателей), а также будет периодически обновляться. Я подозреваю, что есть те, кто распечатывает документ для справки. Возможно ли в Документах Google ввести в нижний колонтитул коды полей, которые указывают дату печати или дату сохранения? Если нет, может быть, мы могли бы назвать документ «[title title] version [x]» и иметь этот отпечаток в нижнем колонтитуле?

Прощай, стек
источник
1
Почти идентичный вопрос, заданный через два года после этого: stackoverflow.com/questions/13585272/…
yurkennis

Ответы:

3

Увы, сейчас это не представляется возможным; Документы Google не поддерживают поля автообновления, которые поддерживает Office.

Вот ветка поддержки, где вы можете запросить эту функцию - я также разместил ответ на нее.

Джаррод Диксон
источник
Спасибо; Я также добавил комментарий. Эта ветка рассказала мне, как добавить счетчик страниц (то есть страницу X из Y), это был бы мой следующий вопрос!
Прощай, обмен
К сожалению, эта ссылка сейчас устарела.
Прощай, обмен
3

Да, это возможно. Однако это не то, что действительно возможно с использованием существующего API. Действительно, отсутствие полей и связанных с ними возможностей, как в Word, является серьезным недостатком для автоматизации документов.

Нечто подобное вставит нижний колонтитул при открытии и повторном открытии документа, но в конечном итоге это не очень хорошее решение.

function onOpen() {
    var time = new Date();
    time = Utilities.formatDate(time, "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
    var doc = DocumentApp.getActiveDocument();
    var s;

    if (!doc.getFooter()) {
        var footer = doc.addFooter();
        var footerText = footer.appendParagrap(time);
    } else {
        var footer = doc.getFooter();
        var footerElements = footer.getNumChildren();
        var para = footer.getParagraphs();
        s = para[footerElements-1].getText();
        var footerText = footer.replaceText(s , time);
    }
};

РЕДАКТИРОВАТЬ: Как добавить скрипт.

Этот код, который я представил выше, действительно должен быть в своей собственной функции, вызываемой из функции OnOpen (), а не в виде оптовой продажи, но все это хорошо для примера.

Если вы перейдете в меню «Инструменты» открытого документа, а затем в Диспетчер сценариев, при его загрузке убедитесь, что он в данный момент пуст, если там есть записи, вы сами можете разместить код.

Закройте диспетчер сценариев, вернитесь в меню «Инструменты» и выберите «Редактор сценариев». Теперь, если у вас ничего не было в вашем диспетчере скриптов, выделите весь код и удалите его. Затем вы можете вставить приведенный выше код и затем сохранить его.

Закройте документ и снова откройте его, и вы увидите, что в нижнем колонтитуле теперь есть дата времени. Он должен обновляться при каждом открытии документа, ничего особенного, но это поможет вам.

Теперь для тех из вас, у кого уже есть код, связанный с вашим документом. Добавление приведенного выше кода за вычетом первой и последней строк в функцию onOpen () также будет работать, но это может не произойти из-за конфликтующего кода.

Надеюсь, это поможет вам.

jCisco
источник
Возможно, вы можете рассказать людям, как добавить сценарий?
Джейкоб Ян Туинстра
@JacobJanTuinstra Я обновил ответ, надеюсь, это поможет.
jCisco
0

Это расширение ответа jCisco, решение для установки и забывания, которое хорошо работает в документах Google и может быть настроено для работы с листами и т. Д.

  1. Поместите это в нижний колонтитул вашего документа:

    Неконтролируемый при печати / сохранении: 2016-09-03 14:05. Обновить pdf: goo.gl/xXXxxx

    Эта ссылка на goo.gl является короткой версией ссылки на общий доступ вашего документа «Любой может просматривать», но замените ее /edit?usp=sharingв конце ссылки /export?format=pdf(или, /export/pdfесли это лист). Затем перенесите отредактированную ссылку для обмена на goo.gl, чтобы сократить ее.

  2. Откройте редактор скриптов вашего документа (Инструменты> Редактор скриптов ...) и добавьте приведенный ниже код. Вы должны открыть редактор из документа, чтобы получить скрипт, связанный с документом, а не отдельный скрипт, который сохраняется на вашем диске Google.

Код:

function DocControl() {
  var time = new Date();
  time = Utilities.formatDate(time, "GMT+10:00", "yyyy-MM-dd' 'HH:mm");
  var doc = DocumentApp.getActiveDocument();
  var bod = doc.getBody();
  var fol = bod.getParent();

  // Define a custom paragraph style.
  var style = {};
  style[DocumentApp.Attribute.FONT_FAMILY] = 'Proxima Nova';
  style[DocumentApp.Attribute.FONT_SIZE] = 8;
  style[DocumentApp.Attribute.ITALIC] = true;

  for (i = 0; i<fol.getNumChildren(); i++){
    var child = fol.getChild(i);
    if (child.getType() == DocumentApp.ElementType.FOOTER_SECTION) {
      var footerText = child.asFooterSection().replaceText("Uncontrolled when Printed\/Saved: (.*). Refresh pdf: ", "Uncontrolled when Printed\/Saved: " + time + ". Refresh pdf: ");
      footerText.setAttributes(style);
    }
  }
}

Вы можете изменить часовой пояс (мой AEST) и стиль абзаца в соответствии с вашими потребностями.

  1. Добавьте управляемый временем триггер (Ресурсы> Триггеры текущего проекта). Установите его для запуска «DocControl» каждую минуту. Установите уведомления еженедельно.

Время в нижнем колонтитуле будет обновляться каждую минуту. Нет необходимости открывать документ или быть онлайн и т. Д., Поскольку серверы Google выполняют всю работу.

Тем не менее, вы можете ожидать, что еженедельно отправляете электронное письмо от Google со списком случаев, когда скрипт не запускался, но для меня это было всего ~ 1% времени, и он запускался снова в следующую минуту, так что в целом это не имело значения.

ajlowndes
источник