Как получить список всех имен подпапок из родительских папок в листе Google с помощью скрипта приложений Google Drive

Как я могу перечислить все имена подпапок с диска Google в листах Google?

Вот код, он работает, но я не могу поместить его в таблицы Google.

введите здесь описание изображения Вместо регистратора мне нужно заменить лист Google. Пожалуйста, помогите мне в этом сценарии?


person karampuri sathish    schedule 28.04.2021    source источник
comment
stackoverflow.com/a/55248127/7215091   -  person Cooper    schedule 28.04.2021
comment
Добро пожаловать в SO. Пожалуйста, не используйте изображение для показа кода. Вы можете легко написать код, используя форматирование Markdown. stackoverflow.com/editing-help#syntax-highlighting   -  person Muhammad Tariq    schedule 28.04.2021


Ответы (1)


Если вы планируете использовать настраиваемую функцию, чтобы написать список дополнительных - имена папок в Google Таблицах. Это не будет работать, потому что ваша функция требует авторизации при использовании DriveApp, она выдаст сообщение об ошибке You do not have permission to call X service., служба требует авторизации пользователя и, следовательно, не может использоваться в пользовательской функции, как указано здесь.

Вы можете написать имена своих подпапок в Google Таблицах, используя службу электронных таблиц. Но вам нужно указать конкретный лист и ячейку, в которую вы хотите записать свои данные.

Образец кода:

function findSubFolder(){
  var childFolder = DriveApp.getFolderById('xxxxxxxx').getFolders();
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var activeCell = activeSheet.getActiveCell();

  var childNames = [];
  while (childFolder.hasNext()) {
    var child = childFolder.next();
    Logger.log(child.getName());
    childNames.push([child.getName()]);
  }
  
 
 activeSheet.getRange(activeCell.getRow(),activeCell.getColumn(),childNames.length,1).setValues(childNames);
}

Что оно делает?

  1. Получите активный лист с помощью SpreadsheetApp.getActiveSheet (). и активная ячейка с помощью Sheet.getActiveCell ()
  2. Получите все имена своих подпапок и добавьте их в массив childNames, используя Array.prototype.push ()

Обратите внимание: когда я нажимал дочерние имена, я использовал [sub-folder name]. Это необходимо, когда мы хотим использовать Range.setValues ​​(), который принимает двумерный массив, в котором я хочу иметь несколько строк.

  1. Запишите массив childNames на активный лист, начиная с активной ячейки. Используя Sheet.getRange (row, column, numRows, numColumns) и Range.setValues ​​(значения )

Выход:

введите описание изображения здесь


Если вы хотите записать имена подпапок в одной ячейке (в вашей активной ячейке), вы можете заменить

activeSheet.getRange(activeCell.getRow(),activeCell.getColumn(),childNames.length,1).setValues(childNames);

to

activeCell.setValue(childNames.flat().toString());

Выход:

введите описание изображения здесь

person Ron M    schedule 28.04.2021