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

Показаны сообщения с ярлыком google. Показать все сообщения
Показаны сообщения с ярлыком google. Показать все сообщения

воскресенье, 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,
            fileMd5: Drive.Files.get(sid)['md5Checksum'],
            folderFile: parentFolder, 
            dataCreated: file.getDateCreated(),
            dataLastUpd : file.getLastUpdated(), //DriveApp.getFileById(sid).getLastUpdated
            size: file.getSize(),
            filePermission: file.getSharingPermission()
          } 
   

  let slog = obj.fileName + '; ' +  obj.fileId + '; ' + obj.fileMd5 + '; '+ parentFolder
  Logger.log(slog);
  
  ss.appendRow([obj.folderFile, obj.fileName, obj.fileId, obj.fileMd5, obj.dataLastUpd, obj.dataCreated, obj.size, obj.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,
            fileMd5: Drive.Files.get(sid)['md5Checksum'],
            folderFile: parentFolder, 
            dataCreated: file.getDateCreated(),
            dataLastUpd : file.getLastUpdated(), //DriveApp.getFileById(sid).getLastUpdated
            size: file.getSize(),
            filePermission: file.getSharingPermission()
          } 
let slog = obj.fileName + '; ' +  obj.fileId + '; ' + obj.fileMd5 + '; '+ parentFolder + '; ' + obj.filePermission
  Logger.log(slog);
  
  ss.appendRow([obj.folderFile, obj.fileName, obj.fileId, obj.fileMd5, obj.dataLastUpd, obj.dataCreated, obj.size, obj.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)
...