показать список файлов из папки Google Drive в модальном диалоге - PullRequest
1 голос
/ 23 января 2020

Привет. Я пытаюсь получить список файлов в одной из папок на моем диске для отображения с помощью .showModalDialog. Вот что я получил до сих пор

/// gs.code

function ImportSBMessage() {
        var html = HtmlService.createHtmlOutputFromFile('Message');
        SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
       .showModalDialog(html, 'List of files in folder');
}

function getfiles(){

    var id = DriveApp.getFoldersByName('attach to Email').next().getId();
    var files = DriveApp.getFolderById(id).getFiles();
   while (files.hasNext()) {
    var file = files.next();
    Logger.log(file);
    return file
  }

}

/// html ........ (в этой части я не знаю, как это сделать, поэтому он вернет мой список файлов)

<!DOCTYPE html>
<html>
<head>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" 
  href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">

</head>
 <body>
   <script>

   google.script.run.withSuccessHandler().getfile();


   </script>






  </body>
</html>

спасибо

1 Ответ

0 голосов
/ 23 января 2020
  • Вы хотите получить список файлов в папке.
  • Вы хотите показать список файлов в диалоговом окне.

Если мое понимание верно, как об этом ответе? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точки изменения:

Для стороны скрипта Google Apps

  • var id = DriveApp.getFoldersByName('attach to Email').next().getId(); и var files = DriveApp.getFolderById(id).getFiles(); могут быть изменено на var files = DriveApp.getFoldersByName('attach to Email').next().getFiles();.

Для стороны HTML

  • При запуске google.script.run.withSuccessHandler().getfile() функция getfile() на стороне скрипта Google Apps отсутствует. На стороне скрипта Служб Google имя функции - getfiles().
  • . В вашем случае вы можете использовать список, полученный со стороны getfiles() скрипта Служб Google на withSuccessHandler().
    • В google.script.run.withSuccessHandler().getfile(), после завершения getfile(), запускается function из withSuccessHandler(function). В это время в качестве аргументов можно использовать значения из getfile().

Модифицированный скрипт:

Когда ваш скрипт модифицируется, как насчет следующая модификация?

Сторона скрипта Google Apps:

Пожалуйста, измените getfiles() следующим образом.

function getfiles(){
  var files = DriveApp.getFoldersByName('attach to Email').next().getFiles();  // Modified
  var fileList = [];  // Added
  while (files.hasNext()) {
    var file = files.next();
    fileList.push({filename: file.getName(), fileId: file.getId()});  // Added
  }
  return fileList;  // Modified
}
  • В этой модификации имена файлов и идентификаторы файлов файлы возвращаются в виде массива.

HTML side:

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

<body>
  <ul></ul> <!-- Added -->
  <script>
  google.script.run.withSuccessHandler(list => {  // Modified
    const li = list.reduce((s, e) => s += "<li>" + e.filename + "(" + e.fileId + ")</li>", "");
    $("ul").append(li);
  }).getfiles();
  </script>
</body>
  • В этой модификации список добавляется с использованием извлеченного массива.

Примечание:

  • В вышеописанном измененном сценарии, когда в редакторе сценариев запускается ImportSBMessage(), открывается диалоговое окно и запускается getfiles(). Затем отображается список файлов.
  • Это простой пример сценария. Поэтому, пожалуйста, измените его для вашей реальной ситуации.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, в котором вы хотите, я приношу свои извинения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...