database - 将新文件添加到谷歌驱动器时自动更新谷歌电子表格
问题描述
当新文件添加到某个谷歌驱动器文件夹时,我需要更新谷歌电子表格。
它需要拉取“姓名”、“日期”和“网址链接”等数据。
我读过一些谷歌工作表脚本不会让你添加“新文件”作为事件,所以我必须每 30 分钟运行一次,这没有问题;我不能做的是清除电子表格并创建一个新电子表格,因为内容很多,并且用谷歌驱动器中的所有数据填充电子表格大约需要 10 分钟。
这是我用来创建电子表格的脚本
function listFolders(folder) {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(["Name", "Sharing Access", "Sharing Permission", "Get Editors", "Get Viewers", "Date", "Size", "URL", "Download", "Description", "Type"]); //writes the headers
var folder = DriveApp.getFolderById("YOUR_FOLDER_ID");//that long chunk of random numbers/letters in the URL when you navigate to the folder
var files = folder.getFiles();//initial loop on loose files w/in the folder
var cnt = 0;
var file;
while (files.hasNext()) {
var file = files.next();
var listEditors = file.getEditors(); //gets the editor email(s), doesn't show your own as it's assumed
var editors = [];
for (var cnt = 0; cnt < listEditors.length; cnt++) {
editors.push(listEditors[cnt].getEmail());
Logger.log(editors);
};
var listViewers = file.getViewers(); //gets the viewer email(s)
var viewers = [];
for (var cnt = 0; cnt < listViewers.length; cnt++) {
viewers.push(listViewers[cnt].getEmail());
Logger.log(viewers);
}
cnt++; //data chunk pushes all the file info to the ss
data = [
file.getName(),
file.getSharingAccess(),
file.getSharingPermission(),
editors.toString(),
viewers.toString(),
file.getDateCreated(),
file.getSize(),
file.getUrl(),
"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
file.getDescription(),
file.getMimeType(),
];
sheet.appendRow(data);
};
var subfolders = folder.getFolders(); //same thing as above but for all the subfolders in the folder
while (subfolders.hasNext()) {
//Logger.log(folder);
var name = subfolders.next();
var files = name.getFiles();
var cnt = 0;
var file;
while (files.hasNext()) {
var file = files.next();
var listEditors = file.getEditors();
var editors = [];
for (var cnt = 0; cnt < listEditors.length; cnt++) {
editors.push(listEditors[cnt].getEmail());
Logger.log(editors);
};
var listViewers = file.getViewers();
var viewers = [];
for (var cnt = 0; cnt < listViewers.length; cnt++) {
viewers.push(listViewers[cnt].getEmail());
Logger.log(viewers);
}
cnt++;
data = [
file.getName(),
file.getSharingAccess(),
file.getSharingPermission(),
editors.toString(),
viewers.toString(),
file.getDateCreated(),
file.getSize(),
file.getUrl(),
"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
file.getDescription(),
file.getMimeType(),
];
sheet.appendRow(data);
};
}
}
提前致谢。
解决方案
推荐阅读
- python - 从不重叠的点和多边形中获取属性
- node.js - 如何使用 NodeJs 在 https://api.linkedin.com/mediaUpload/ 上放置媒体
- rust - 在 for 迭代器中调用可变方法的不同方法
- java - TextView 不会显示 Html
- swift - 如何在 swift 中创建具有非常量变量的方法
- python - 防止 MySQL 在从 Python 导入数据时将浮点数/小数转换为 int
- typescript - 用于解析器 GraphQL 瑜伽的 TypeScript 类型(在上下文中使用 prisma2)
- mysql - 当我尝试访问或创建表时出现错误
- javascript - JavaScript 中被视为对象的函数
- java - 如何加快运行时 Java 代码检测?