Создать список вложенных папок только в Google листе

Один большой аргумент против встроенных обработчиков событий и аргумент, который решается другими ответами здесь, - это разделение представления и логики .

Однако на самом деле существует большая проблема IMO: как-то неуловимый способ оценки обработчиков inline-событий.

Как вы можете теперь, содержимое атрибутов on* будет использоваться как body события обработчик функция. Но какие характеристики имеет эта функция?

Одним из удивительных является то, что свойства некоторых элементов-предков и самого элемента находятся в области обработчика inline-событий.

Вот пример :

Click me as well!

Нажмите на button журналы

[object HTMLInputElement]
undefined

в консоли. Тот факт, что window.foo является undefined, говорит вам, что глобальная переменная отсутствует foo. Итак, откуда взялась переменная foo? Почему console.log(foo) регистрирует входной элемент и не бросает опорную ошибку? Поскольку свойства элемента form находятся в области действия обработчика события, а элемент form имеет свойство для каждого элемента управления указанной именованной формы, который он содержит. Вы можете легко проверить это с помощью console.log(document.querySelector('form').foo).

Теперь щелчок по элементу div фактически вызывает опорную ошибку:

ReferenceError: foo is not defined

Таким образом, очевидно, что элемент form находится только в области элементов управления формой, а не для любого потомка.

Аналогично, свойства объекта document также находятся в области встроенных обработчиков событий, которые могут привести к некоторым неожиданным ошибкам (знаете ли вы, что document имеет свойство plugins?).

Как точно вычисляются обработчики обработанных событий, формализованные в спецификации HTML5 . Имейте петлю на шаге 10, в частности, где описано создание цепочки видимости.


Заключение:

Из-за этого неявного соединения между элементами и inline обработчики событий, ошибки могут быть очень трудно отслеживать. Конечно, отлично использовать встроенные обработчики событий, если вы просто хотите что-то проверить. Но использование их в производственном коде требует более высоких затрат на обслуживание.

Статьи на quirksmode.org объясняют разные способы привязки обработчиков событий и их (dis) преимуществ.

0
задан Andykjb 4 March 2019 в 19:35
поделиться

2 ответа

На самом деле, есть команды, специфичные для папок. Измените вашу функцию следующим образом:

var subFolders = folder.getFolders();

while (subFolders.hasNext()
  {    
  var childFolder = childFolders.next(); 

  var folderID = childFolder.getId();    
  Logger.log(folderID);    
  }
0
ответ дан J. G. 4 March 2019 в 19:35
поделиться

Получил работу с кодом ниже.

Спасибо Дж. Г. за помощь, ваш вклад заставил его работать!

function generateFolderIndex(id) {
   var folder = DriveApp.getFolderById('[ID]');
   var subFolders = folder.getFolders();
   var childFolders = subFolders
   var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Projekt');

   sheet.clear();
   sheet.appendRow(["Projekt", "Länk", "Skapad"]);

while (subFolders.hasNext())
  {    
  var childFolder = childFolders.next(); 

  var folderID = childFolder.getId();
  var name = childFolder.getName()
  var link = childFolder.getUrl()
  var date = childFolder.getDateCreated()


   data = [name, link, date, ]
    sheet.appendRow(data);

  }
};
0
ответ дан Andykjb 4 March 2019 в 19:35
поделиться
Другие вопросы по тегам:

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