Поиск по этому блогу

воскресенье, 26 февраля 2023 г.

Coding. Список файлов на диске Google Drive

 Apps Script

Очень удобная вещь этот App Script со встроенной IDE и хорошим мануалом
yt manuals Laurence Svekis - к этим мануалам прилагается код в Git репозитории


// под свои нужды я написала код для получения всех файлов, хранящихся на Google Drive

function saveAllFiles2sheet() {
var ssid = '1q5BtsLViJBYgmwsnQJlrwe7deU9lYkuCh15_jlHpD7U' 
const ss = SpreadsheetApp.openById(ssid).getSheetByName('log');
// header
ss.appendRow(['Folder','FileName''ID''MD5''Modified''Created''size''permissons']);
var files = DriveApp.getFiles();
while (files.hasNext()) {
  var file = files.next();
sid = file.getId()
let parentFolder = file.getParents().next().getName()  
  let obj = {
            fileName:file.getName(),   //DriveApp.getFileById(sid).getName(),
            mimeType :file.getMimeType(), //DriveApp.getFileById(sid).getTargetMimeType,
            fileId:sid,
            fileMd5Drive.Files.get(sid)['md5Checksum'],
            folderFileparentFolder
            dataCreatedfile.getDateCreated(),
            dataLastUpd : file.getLastUpdated(), //DriveApp.getFileById(sid).getLastUpdated
            sizefile.getSize(),
            filePermissionfile.getSharingPermission()
          } 
   

  let slog = obj.fileName + '; ' +  obj.fileId + '; ' + obj.fileMd5 + '; 'parentFolder
  Logger.log(slog);
  
  ss.appendRow([obj.folderFileobj.fileNameobj.fileIdobj.fileMd5obj.dataLastUpdobj.dataCreatedobj.sizeobj.filePermission]);
}

function save2sheetsBiId(sid) {
var ssid = '1q5BtsLViJBYgmwsnQJlrwe7deU9lYkuCh15_jlHpD7U' 
const ss = SpreadsheetApp.openById(ssid).getSheetByName('log');
let file = DriveApp.getFileById(sid)
let parentFolder = file.getParents().next().getName() 
let permissions = file.getSharingPermission()
Logger.log(permissions)

  let obj = {
            fileName:file.getName(),   //DriveApp.getFileById(sid).getName(),
            mimeType :file.getMimeType(), //DriveApp.getFileById(sid).getTargetMimeType,
            fileId:sid,
            fileMd5Drive.Files.get(sid)['md5Checksum'],
            folderFileparentFolder
            dataCreatedfile.getDateCreated(),
            dataLastUpd : file.getLastUpdated(), //DriveApp.getFileById(sid).getLastUpdated
            sizefile.getSize(),
            filePermissionfile.getSharingPermission()
          } 
let slog = obj.fileName + '; ' +  obj.fileId + '; ' + obj.fileMd5 + '; 'parentFolder + '; ' + obj.filePermission
  Logger.log(slog);
  
  ss.appendRow([obj.folderFileobj.fileNameobj.fileIdobj.fileMd5obj.dataLastUpdobj.dataCreatedobj.sizeobj.filePermission]);


}


function myFunction() {

//save2sheetsBiId('1oGhGUz0-wjtSZzmmIY2-LIcRxLCoUo9h') // файл по ID
 saveAllFiles2sheet() // получение всего списка файлов
}

Особая фича от Google - триггеры, ке можно привязать к любому действию, будь то
загрузка файлов или редактирование документов, тот же код можно привязать к триггеру
загрузки файлов

Стандартный пример из мануала "загрузка фалов" можно дополнить функцией
записи в sheet информации о файле

function onFormSubmit(e) {
....
    // Moves the files to the destination folder.
    if (fileUploads.length > 0) {
      fileUploads.forEach((fileId) => {
        DriveApp.getFileById(fileId).moveTo(destFolder);
        console.log(`File Copied: ${fileId}`)
// save to sheets
save2sheetsBiId(fileId)
...