Google Drive - DriveApp получить миниатюру видео на электронную таблицу

Я пытаюсь организовать огромный список видеофайлов на Google Диске, где я использую приведенный ниже код для отображения изображений JPG.

function myFiles() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('MyImages');
var files = DriveApp.getFiles();
var s='';
var cnt=1;
while(files.hasNext()) 
{
var fi=files.next();
var type=fi.getMimeType();

if(type==MimeType.GIF || type==MimeType.JPEG || type==MimeType.PNG)
{
  sh.appendRow([cnt++,fi.getName(),type,fi.getUrl(),'=IMAGE("' + 
getThumbNailLink(fi.getId()) + '",1)']);
}
} 
}

function getThumbNailLink(fileId)
{
var file=Drive.Files.get(fileId);
return file.thumbnailLink;
}

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

Спасибо

1 ответ

Вы хотите импортировать "counter, filename, mimetype, link of file, thumbnail" для каждого видеофайла в электронную таблицу. Если мое понимание верно, как насчет этой модификации?

Точки модификации:

  • Ссылки на миниатюры из видеофайлов можно получить с помощью Drive API.
  • Вы можете получить видео файлы, используя mimetype, например video/mp4,
  • Соберите данные каждого файла и импортируйте собранные данные, используя setValues(),
    • Это более эффективно, чем при использовании appendRow() с петлей.

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

function myFiles() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('MyImages');
  var files = DriveApp.getFiles();
  var s = '';
  var cnt = 1;
  var values = []; // Added
  while(files.hasNext()) {
    var fi = files.next();
    var type = fi.getMimeType();
    if (type.indexOf("video") > -1) { // Modified
      values.push([cnt++,fi.getName(),type,fi.getUrl(),'=IMAGE("' + getThumbNailLink(fi.getId()) + '",1)']); // Modified
    }
  }
  if (values.length > 0) { // Added
    sh.getRange(sh.getLastRow() + 1, 1, values.length, values[0].length).setValues(values); // Added
  }
}

function getThumbNailLink(fileId) {
  var file = Drive.Files.get(fileId);
  return file.thumbnailLink;
}

Замечания:

  • По моему опыту, когда видеофайлы загружаются на Google Drive с использованием Drive API, ссылку на миниатюру можно извлечь из файлов, которые можно увидеть в миниатюре.
  • Если вы хотите получить данные из другого mimetype видеофайла, пожалуйста, измените if (type == "video/mp4") {,

Если я неправильно понимаю ваш вопрос, извините.

Другие вопросы по тегам