Apps Script
Очень удобная вещь этот App Script со встроенной IDE и хорошим мануалом
yt manuals
- к этим мануалам прилагается код в 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)
...