Я хочу, чтобы скрипт Google Docs автоматически загружался? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть скрипт, который автоматически обновляет дату в заголовке документа Google при открытии.Я бы не хотел устанавливать этот скрипт отдельно для каждого документа.Я могу создать шаблон, но затем каждый раз, когда я создаю новый документ, мне нужно перейти в «Создать»> «Документы Google»> «Из шаблона» и затем выбрать свой шаблон.Я хочу просто нажать «Создать»> «Документы Google» и автоматически загрузить этот шаблон.

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать такой диалог:

Код:

function onOpen(){
  SpreadsheetApp.getUi().createMenu('My Menu')
  .addItem("Open Templated Google Doc", 'showMyDialog')
  .addToUi()
}

function createTemplatedGoogleDoc(name){
  var doc=DocumentApp.create(name);
  doc.addHeader().appendParagraph(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy"))
  //doc.getBody().appendParagraph(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy"));
  //doc.getBody().getChild(0).removeFromParent();
  doc.saveAndClose()
  return doc.getUrl();
}

function showMyDialog(){
  var ui=HtmlService.createHtmlOutputFromFile('docwithdate');
  SpreadsheetApp.getUi().showModelessDialog(ui, 'My Doc with Date');
}

docwithdate.html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  </head>
  <script>
    function createFile(){
      var name=document.getElementById('filename').value;
      google.script.run
      .withSuccessHandler(function(url){
        var html='<a href="'+ url +'">Go To File</a>';
        $(html).appendTo("body");
      })
      . createTemplatedGoogleDoc(name);
    }
  </script>
  <body>
    <input type="text" id="filename" />
    <input type="button" value="Create File" onClick="createFile()" />
  </body>
</html>

Диалог выглядит так:

enter image description here

Вы вводите имя файла и нажимаете кнопку.Сценарий возвращает ссылку на ваш новый файл.

Это также избавляет от диалогового окна:

function onOpen(){
  SpreadsheetApp.getUi().createMenu('My Menu')
  .addItem("Open Templated Google Doc", 'showMyDialog')
  .addToUi()
}

function createTemplatedGoogleDoc(name){
  var doc=DocumentApp.create(name);
  doc.addHeader().appendParagraph(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy"))
  //doc.getBody().appendParagraph(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy"));
  //doc.getBody().getChild(0).removeFromParent();
  doc.saveAndClose()
  var rObj={url:doc.getUrl(),filename:doc.getName()}
  return rObj;
}

function showMyDialog(){
  var ui=HtmlService.createHtmlOutputFromFile('docwithdate');
  SpreadsheetApp.getUi().showModelessDialog(ui, 'My Doc with Date');
}

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  </head>
  <script>
    function createFile(){
      var name=document.getElementById('filename').value;
      google.script.run
      .withSuccessHandler(function(rObj){
        var html='<br /><a href="'+ rObj.url +'" onClick="google.script.host.close();">Go To File:' + rObj.filename + '</a>';
        $(html).appendTo("body");
      })
      . createTemplatedGoogleDoc(name);
    }
  </script>
  <body>
    <input type="text" id="filename" />
    <input type="button" value="Create File" onClick="createFile()" />
  </body>
</html>

Я бы, вероятно, сделал это веб-приложением и поместил бы его в закладку для быстрого доступа.Так что вам просто нужно добавить это:

function doGet(){
  return HtmlService.createHtmlOutputFromFile('docwithdate');
}

и развернуть его.

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

...