Попытка автоматически открыть документ, созданный скриптом

У меня есть электронная таблица, которая отслеживает серию документов. Внутри электронной таблицы у меня есть кнопка, которая при нажатии находит определенный файл шаблона на моем диске и делает его копию. Этот скрипт выглядит так:

function myFunction() {
    var file = DriveApp.getFileById("<template doc id goes here>");
    var folder = DriveApp.getFolderById("<folder where new file will go>"); 
    var newfile = "<newly created file name goes here>";

    file.makeCopy(newfile, folder);
}

Есть ли способ заставить вновь созданный документ открываться на новой вкладке после его создания? Таким образом, после создания нового документа мне не нужно возвращаться в папку и открывать ее вручную для редактирования.




Ответы (2)


Если вы используете службу HTML для исходной кнопки, вы можете просто добавить функцию window.open.

<script>
  function openTheUrl() {
    window.open("http://www.stackoverflow.com");
  };
</script>

URL-адрес нового документа можно вернуть с помощью метода getUrl() класса File:

Документация Google — getUrl()

Этот процесс состоит из нескольких шагов.

  • Вызовите функцию Apps Script gs с помощью google.script.run в HTML
  • Код на стороне сервера Google создает новый документ и возвращает значение
  • Функция обратного вызова onSuccess открывает новый документ

Тег HTML Script для вызова кода сценария приложения и определения функции успеха:

<script>

  window.callServerCode = function() { 
    google.script.run
    .withSuccessHandler(openTheUrl)
    .myFunction();
  }

  function openTheUrl(argNewUrl) {
    Logger.log('argNewUrl: ' + argNewUrl);
    window.open(argNewUrl);
  };
</script>

Код скрипта приложений должен возвращать значение:

function myFunction() {
  var file = DriveApp.getFileById("<template doc id goes here>");
  var folder = DriveApp.getFolderById("<folder where new file will go>"); 
  var newfile = "<newly created file name goes here>";

  var newFile = file.makeCopy(newfile, folder);
  var newDocURL = newFile.getUrl();

  return newDocURL;
}

Функция google.script.run withSuccessHandler автоматически получает возвращаемое значение.

person Alan Wells    schedule 23.01.2015

Как упоминалось в этом вопросе Как открыть URL-ссылку из JavaScript внутри гаджета сайта Google Google Apps Script HTML вызов window.open не будет работать из-за очистки caja.

однако вы можете добавить URL-адрес в cel или создать ссылку в HTML. Пользователю придется щелкнуть по нему, чтобы открыть новый лист, что может быть не тем решением, которое вам нужно, но это сэкономит время на поиск нового файла на диске.

person Gerardo    schedule 23.01.2015