Скрипт Google Sheets - загрузка файла из папки на диске

Я думаю, что проблема здесь в том, что, высмеивая вызов метода, вы используете isA для параметров. По моему мнению, метод isA используется для проверки не для передачи параметров. Попробуйте использовать любой метод:

Mockito.when(organizationsDao.getOrganizations(any(LocalDate.class), any(List.class), any(List.class))).thenReturn(organizations);
1
задан Kara 29 January 2019 в 17:14
поделиться

1 ответ

  • У вас уже есть выпадающий список.
  • Когда вы выбираете одно из имен файлов из выпадающего списка, вы хотите открыть файл как новую вкладку браузера.

Я понял ваш вопрос, как указано выше. Как насчет этого примера сценария? Процесс этого примера сценария выглядит следующим образом.

  1. Выберите имя файла в раскрывающемся списке.
  2. Когда имя файла существует, откройте диалоговое окно для запуска Javascript, и выбранный файл откроется на новой вкладке браузера.
  3. Когда открывается новая вкладка, фокус перемещается на новую вкладку.
  4. После того, как была открыта новая вкладка, диалоговое окно Spreadsheet закрывается.

Пример сценария:

При использовании этого примера сценария выполните следующую последовательность действий.

  1. Скопируйте и вставьте следующий пример сценария в связанный скрипт таблицы, в которой есть раскрывающийся список.
  2. Этот скрипт использует событие OnEdit. Поэтому, пожалуйста, установите триггер OnEdit на openFile().
  3. Пожалуйста, измените Sheet1 из var sheet = "Sheet1". В этом примере предполагается, что раскрывающийся список помещен в «Лист1».
  4. Пожалуйста, измените A1 из var range = "A1". В этом примере предполагается, что раскрывающийся список помещается в ячейку «A1».
Сценарий:
function openFile(e) {
  var sheet = "Sheet1"; // Please set the sheet with the dropdown list.
  var range = "A1"; // Please set the range of dropdown list.
  if (e.source.getSheetName() == sheet && e.range.getA1Notation() == range) {
    var file = DriveApp.getFilesByName(e.value);
    if (file.hasNext()) {
      var f = file.next();
      var url = f.getUrl();
      var script = "<script>window.open('" + url + "', '_blank').focus();google.script.host.close()</script>";
      var html = HtmlService.createHtmlOutput(script);
      SpreadsheetApp.getUi().showModalDialog(html, 'Open ' + f.getName());
    }
  }
}

Примечание:

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

Ссылки:

Редактировать:

Причиной проблемы является function onEdit(e) {openFile()}. e из onEdit(e) не дано в openFile(). При этом возникает такая ошибка. Поэтому, пожалуйста, установите триггер OnEdit для функции openFile(). Поэтому, пожалуйста, сделайте следующее.

  1. Удалить функцию onEdit().
  2. Установите openFile() как триггер OnEdit.
    • При этом, когда вы выбираете имя файла в раскрывающемся списке, openFile() автоматически запускается установленным триггером. В это время дается объект события.

Как установить триггер OnEdit:

  1. Откройте редактор скриптов.
  2. Редактировать -> Триггеры текущего проекта.
  3. Нажмите «Добавить триггер».
  4. Установите «openFile» для «Выберите, какую функцию запускать».
  5. Установите «Из электронной таблицы» для «Выберите источник события».
  6. Установите «При редактировании» для «Выберите тип события».
0
ответ дан Tanaike 29 January 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: