google-apps-script - 我们如何在单个 google drive 应用程序中运行多个功能?
问题描述
我想在一次运行中运行 google drive app 脚本中的两个作业,我们可以这样做吗?抱歉,我是菜鸟,我对 php 或脚本的了解不多。这是示例代码
function copyfile(e) {
var filenames = DriveApp.getFoldersByName("abc").next().getFilesByName("filename.txt").next().getBlob().getDataAsString().split("\r\n").filter(String);
var sourceFolderName = "music";
var destinationFolderId = "folder id 1";
var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
for (var i = 0; i < filenames.length; i++) {
var filename = filenames[i];
var file = source_folder.getFilesByName(filename);
if (file.hasNext()) {
var dest_folder = DriveApp.getFolderById(destinationFolderId);
var srcFile = file.next();
var newName = srcFile.getName();
srcFile.makeCopy(newName, dest_folder);
}
}
copyfile1(e); // Added
}
function copyfile1(e) {
var filenames = DriveApp.getFoldersByName("abc").next().getFilesByName("filename.txt").next().getBlob().getDataAsString().split("\r\n").filter(String);
var sourceFolderName = "music";
var destinationFolderId = "folder id 2";
var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
for (var i = 0; i < filenames.length; i++) {
var filename = filenames[i];
var file = source_folder.getFilesByName(filename);
if (file.hasNext()) {
var dest_folder = DriveApp.getFolderById(destinationFolderId);
var srcFile = file.next();
var newName = srcFile.getName();
srcFile.makeCopy(newName, dest_folder);
}
}
}
解决方案
问题 1 的答案:
当你想在被运行myFunction2
后myFunction1
运行时,下面的修改怎么样?请认为这只是几个答案之一。
模式一:
在这种模式中,通过运行myFunction1
和myFunction1
依次myFunction2
运行。
function myFunction1 () {
code
myFunction2(); // Added
}
function myFunction2 () {
code
}
模式二:
在这种模式中,通过运行main
和myFunction1
依次myFunction2
运行。
function myFunction1 () {
code
}
function myFunction2 () {
code
}
// Added
function main() {
myFunction1();
myFunction2();
}
如果这不是你想要的方向,我很抱歉。
问题 2 的答案:
- 您想
copyfile
通过更改 和 的变量来运行filename
的函数。sourceFolderName
destinationFolderId
我可以这样理解。如果我的理解是正确的,那么下面的修改呢?在此修改中,变量被放入一个数组中,该数组以对象作为每个元素。请认为这只是几个答案之一。
示例脚本:
function copyfile(obj) {
var source_folder = DriveApp.getFoldersByName(obj.sourceFolderName).next();
var file = source_folder.getFilesByName(obj.filename);
if (file.hasNext()) {
var dest_folder = DriveApp.getFolderById(obj.destinationFolderId);
var srcFile = file.next();
var newName = srcFile.getName();
srcFile.makeCopy(newName, dest_folder);
}
}
// Please run this function.
function main() {
// Please set this object.
var object = [
{filename: "filenames_value1", sourceFolderName: "sourceFolderName_value1", destinationFolderId: "destinationFolderId _value1"},
{filename: "filenames_value2", sourceFolderName: "sourceFolderName_value2", destinationFolderId: "destinationFolderId _value2"}
];
for (var i = 0; i < object.length; i++) {
copyfile(object[i]);
}
}
- 在运行脚本之前,请设置 的
filename
,sourceFolderName
和destinationFolderId
的对象的变量object
。 - 运行脚本时,请运行
main
.
推荐阅读
- r - 按顺序合并按字符分隔的列
- javascript - 为什么我的平滑滚动功能不起作用?
- python - 在 Python 中的 abs(number) 中使用 AND
- javascript - 猴子补丁外部 CSS
- azure-devops - Azure App Service 部署任务选项,用于在部署时删除容器中的文件
- react-native - React Navigation v5 中的 setOptions 内的 CardStyleInterpolators
- user-interface - .container 或 .container-fluid 哪个更适合设计?
- c# - 如何自动向下滚动 - Windows 窗体 C#
- encryption - 即使数据正确,AES-GCM 256 解密也会失败
- reactjs - 输入'{孩子:从不[]; 当使用带有 Typescript 的 material-ui 时,}' 与类型 'IntrinsicAttributes' 没有共同的属性