Как вставлять изображения в соответствии с датой создания с помощью скрипта Google apps?

0

Вопрос

Я ищу файлы изображений inesrt в слайды Google в соответствии с датой их создания. У меня есть следующий код, который последовательно вставляет изображения в слайды Google из папки на диске:

function makeSlides() {
  
  var presentation = SlidesApp.openById(slideID);
  var folder = DriveApp.getFolderById(folderID);
  var contents = folder.getFiles()
  
  var file;
  var i = 1;
  
  while (contents.hasNext()) {
    
    var file = contents.next();
  
    data = file.getId(); 
    
    // insert above image
    
    var image = DriveApp.getFileById(data);
    var slide = presentation.getSlides()[i];
    var image = slide.insertImage(image);
    slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);    
    i++;
 
  }

}

Я хотел бы изменить его так, чтобы изображения добавлялись по дате их создания (либо самые новые, либо самые старые). Любая полученная помощь будет высоко оценена. Спасибо.

2

Лучший ответ

2

Я считаю, что ваша цель заключается в следующем.

  • Вы хотите извлечь файлы изображений из определенной папки.
  • Вы хотите поместить полученные изображения в Google Слайды в порядке даты создания файла.
  • Вы хотите добиться этого с помощью скрипта Google Apps.

В этом случае, как насчет следующей модификации?

Когда используется метод "Файлы: список" в API диска, список файлов можно получить в порядке создания даты. Это используется для модификации.

Измененный сценарий:

Прежде чем использовать этот скрипт, пожалуйста, включите API диска в расширенных службах Google.

function makeSlides() {
  var slideID = "###"; // Please set your Google Slides ID.
  var folderID = "###"; // Please set your folder ID.

  var presentation = SlidesApp.openById(slideID);
  var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)"}).items;
  files.forEach(({id}, i) => {
    var image = DriveApp.getFileById(id);
    var slide = presentation.getSlides()[i];
    var image = slide.insertImage(image);
    slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  });
}
  • При запуске этого сценария список файлов извлекается из определенной папки в порядке даты создания файла. В этом случае, orderBy: "createdDate asc" используется. Это означает, что 1-е изображение является самым старым изображением. Если вы хотите использовать заказ, в котором 1-е изображение является самым новым, пожалуйста, измените его на orderBy: "createdDate desc".

Рекомендации:

2021-11-24 00:26:31

Спасибо за ваш ответ, Танайке, это делает именно то, что я хочу.
sp2

@sp2 Спасибо, что ответили и протестировали его. Я рад, что ваш вопрос был решен. И тебе тоже спасибо.
Tanaike

Привет, Танайке, я нахожу, что приведенный выше код не может загружаться в файлы с общего диска Google (код не выдает ошибок, он просто ничего не загружает). Я могу загружать изображения только со своего личного диска - вы хоть представляете, что здесь происходит?
sp2

@sp2 По поводу вашего дополнительного вопроса, в таком случае, пожалуйста, измените var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)"}).items; Для var files = Drive.Files.list({orderBy: "createdDate asc", q: `'${folderID}' in parents and trashed=false and mimeType contains 'image'`, fields: "items(id)", corpora: "allDrives", includeItemsFromAllDrives: true, supportsAllDrives: true}).items;. Таким образом, файлы на общем диске могут быть извлечены.
Tanaike

Спасибо, Танайке, это работает. Я пытался изменить orderBy параметр для сортировки файлов по порядку 'name' и 'name_natural' и т. Д., Как описано здесь, но это дает ошибку. Почему не могу orderBy принять эти параметры таким образом?
sp2

@sp2 Спасибо за ответ. Я рад, что ваш 2 - й вопрос был решен. По поводу вашего 3-го нового вопроса, я хотел бы поддержать вас. Но я должен извиниться за свое плохое знание английского языка. К сожалению, я не могу этого понять. Я глубоко извиняюсь, что не могу решить все ваши вопросы. Это связано с моим плохим знанием английского языка. Я еще раз глубоко извиняюсь за это. Могу я спросить вас о деталях вашего 3-го вопроса?
Tanaike

Привет, Танайке, это совершенно понятно, не нужно извиняться. В принципе, я спрашивал, как я могу добавлять изображения в алфавитном порядке? Я хотел использовать orderBy : name или orderBy : name_natural в вашем коде вместо orderBy : createdDate, как указано в ссылке, которой я поделился, но она не работает, просто было интересно, почему.
sp2

@sp2 Спасибо за ответ. Я еще раз приношу извинения за мое плохое знание английского языка. Хотя я не уверен, правильно ли я понял ваш 2-й вопрос, например, в моем ответе, когда список файлов извлекается в порядке createdDate, я использовал createdDate asc как ценность. И в этом случае, когда вы хотите отсортировать список файлов по имени файла, как насчет использования orderBy: "title asc"? Если это не было прямым решением вашего 2-го вопроса, я еще раз приношу свои извинения.
Tanaike
1

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

2021-11-23 23:55:56

Спасибо, что поделились этой ссылкой
sp2

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

Популярное в этой категории

Популярные вопросы в этой категории