Posso imprimir a data de impressão ou salvar a data nos documentos do Google?

8

Criei um documento de processamento de texto que será usado por muitas pessoas (uma folha de estilos para escritores) e também será atualizado periodicamente. Suspeito que alguns tenham impresso o documento para referência. No Google Documents, é possível inserir códigos de campo no rodapé que indicam a data de impressão ou a data de salvamento? Caso contrário, talvez possamos nomear o documento "[title title] version [x]" e imprimi-lo no rodapé?

Adeus Troca de Pilha
fonte
11
Pergunta quase idêntica, feita dois anos após esta: stackoverflow.com/questions/13585272/…
yurkennis

Respostas:

3

Infelizmente, isso não parece possível no momento; O Google Docs não suporta os campos de atualização automática do Office.

Aqui está um tópico de suporte onde você pode solicitar esse recurso - eu também publiquei uma resposta nele.

Jarrod Dixon
fonte
Obrigado; Eu adicionei um comentário também. Esse tópico me disse como adicionar uma contagem de páginas (ou seja, página X de Y), que teria sido minha próxima pergunta!
Goodbye Stack Exchange
Infelizmente, esse link está desatualizado.
Adeus Stack Exchange
3

Sim, é possível. No entanto, não é algo realmente possível utilizando a API existente. Realmente, a falta de campos e os recursos associados, como no Word, é uma grande incapacidade para a automação de documentos.

Algo assim irá inserir um rodapé no documento aberto e reabrir, mas, no final das contas, não é uma boa solução.

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);
    }
};

EDIT: Como adicionar o script.

Esse código, como apresentei acima, realmente deve estar em sua própria função chamada da função OnOpen (), e não no atacado, mas tudo de bom, por exemplo.

Se você for ao menu Ferramentas de um documento aberto e depois ao Script Manager, quando ele carregar, verifique se ele está vazio no momento, se houver um registro lá, você estará sozinho para a colocação do código.

Feche o gerenciador de scripts, volte ao menu Ferramentas e selecione Editor de scripts. Agora, se você não tinha nada no seu gerenciador de scripts, selecione todo o código e exclua-o. Você pode colar o código fornecido acima e salvá-lo.

Feche o documento e abra novamente e você deve encontrar agora uma Data de hora no rodapé. Ele deve ser atualizado a cada abertura do documento, nada sofisticado, mas vai ajudar você.

Agora, para aqueles que já possuem código associado ao seu documento. Adicionar o código acima, menos a primeira e a última linha, na função onOpen () também funcionará, mas pode não ser devido ao código que já está em conflito.

Espero que isso faça você ir.

jCisco
fonte
Talvez você possa dizer ao pessoal como adicionar o script?
: 23613 Jan Jacob Tuinstra
@JacobJanTuinstra Atualizei a resposta, espero que isso ajude.
jCisco
0

Esta é uma expansão da resposta do jCisco, e é uma solução para esquecer e esquecer que funciona bem no Google Docs e pode ser aprimorada para trabalhar com folhas etc.

  1. Coloque isso na seção de rodapé do seu documento:

    Não controlado quando impresso / salvo: 03-09-2016 14:05. Atualizar pdf: goo.gl/xXXxxx

    Esse link goo.gl é uma versão curta do link de compartilhamento "Qualquer um pode ver" do seu documento, mas substitua /edit?usp=sharingno final do link por /export?format=pdf(ou /export/pdfse for uma planilha). Em seguida, leve seu link de compartilhamento editado para goo.gl para abreviá-lo.

  2. Abra o editor de scripts do seu documento (Ferramentas> Editor de scripts ...) e adicione o código abaixo. Você precisa abrir o editor de dentro do documento para terminar com um script vinculado ao documento, em vez de um script separado que é salvo no seu Google Drive.

Código:

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);
    }
  }
}

Você pode editar o fuso horário (o meu é AEST) e o estilo do parágrafo para atender às suas necessidades.

  1. Adicione um gatilho controlado por tempo (Recursos> Gatilhos do projeto atual). Defina-o para executar "DocControl" a cada minuto. Defina as notificações como semanais.

O horário no rodapé será atualizado a cada minuto. Não há necessidade de abrir o documento ou estar on-line etc., pois os servidores do Google estão fazendo todo o trabalho.

No entanto, você pode esperar receber um e-mail semanal do google listando as vezes em que o script falhou em executar, mas para mim foi apenas ~ 1% do tempo e é executado novamente no minuto seguinte, portanto, no geral, não importava.

ajlowndes
fonte