google 应用程序脚本。将文件复制到一个驱动器
google apps script. copy files to one drive
我会将文件存储在 google 驱动器中,并且我想将这些文件复制(或移动)到我的 OneDrive。我已经成功地将 OneDrive 连接到 google 驱动器,我可以成功地创建文件夹并通过文件 ID 上传文件。我正在尝试一次将多个文件从 google 驱动器复制(或移动)到 OneDrive,但还没有任何运气。我不擅长编程,只能通过教程完成所有工作,但找不到任何有效的方法。也许有人可以指导我如何去做?对于最终的想法,我想实现 google 驱动器中的文件甚至可以根据文件标题的一部分(名称和姓氏,如果准确的话)复制到单独的文件夹中。目前我已经“开发”了这样的脚本:
function moveFiles(source, dest_folder) {
var source = DriveApp.getFolderById("1faFbaXJNziwIGyer2H2IPALQ8ahBfGMc");
var prop = PropertiesService.getScriptProperties();
var odapp = OnedriveApp.init(prop);
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
var dest_folder =
OnedriveApp.init(PropertiesService.getScriptProperties()).uploadFile(files,
"/samplefolder");
}
}
我相信你的现状和目标如下。
- 您正在使用 OnedriveApp。
- 您已经完成了授权过程。因此,您已经在 PropertiesServices 中获得了访问令牌和刷新令牌。
- 您想将 Google 驱动器特定文件夹中的文件上传到 OneDrive 中的特定文件夹。
- 文件数量为 10 - 20。
- 文件较小。
来自您的以下回复
I have changed accordingly to: var files = file.getId(); but then I receive such error: TypeError: Cannot read property 'getId' of undefined moveFiles @ srcpt.gs:5 If I use DriveApp.getFiles() or source.getFiles(), I receive such error: Exception: Unexpected error while getting the method or property getFileById on object DriveApp. convToMicrosoft @ code.gs:629 OnedriveApp.uploadFile @ code.gs:460 Appreciated for any help.
- 关于
var files = file.getId();
和If I use DriveApp.getFiles() or source.getFiles(), I receive such error:
,很遗憾,我看不懂。
这样的话,下面的修改怎么样?
修改后的脚本:
function myFunction() {
var prop = PropertiesService.getScriptProperties();
var odapp = OnedriveApp.init(prop);
var source = DriveApp.getFolderById("###"); // Please put your folder ID.
var files = source.getFiles();
while (files.hasNext()) {
var file = files.next();
odapp.uploadFile(file.getId(), "/samplefolder/"); // Please set the destination folder name. In this case, the folder name in OneDrive.
}
}
使用"/samplefolder"
时会出错。请用 /
将文件夹名称括起来,例如 "/samplefolder/"
。请注意这一点。
当此脚本为运行时,将Google驱动器特定文件夹中的文件复制到OneDrive中/samplefolder/
的目标文件夹。
参考文献:
我会将文件存储在 google 驱动器中,并且我想将这些文件复制(或移动)到我的 OneDrive。我已经成功地将 OneDrive 连接到 google 驱动器,我可以成功地创建文件夹并通过文件 ID 上传文件。我正在尝试一次将多个文件从 google 驱动器复制(或移动)到 OneDrive,但还没有任何运气。我不擅长编程,只能通过教程完成所有工作,但找不到任何有效的方法。也许有人可以指导我如何去做?对于最终的想法,我想实现 google 驱动器中的文件甚至可以根据文件标题的一部分(名称和姓氏,如果准确的话)复制到单独的文件夹中。目前我已经“开发”了这样的脚本:
function moveFiles(source, dest_folder) {
var source = DriveApp.getFolderById("1faFbaXJNziwIGyer2H2IPALQ8ahBfGMc");
var prop = PropertiesService.getScriptProperties();
var odapp = OnedriveApp.init(prop);
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
var dest_folder =
OnedriveApp.init(PropertiesService.getScriptProperties()).uploadFile(files,
"/samplefolder");
}
}
我相信你的现状和目标如下。
- 您正在使用 OnedriveApp。
- 您已经完成了授权过程。因此,您已经在 PropertiesServices 中获得了访问令牌和刷新令牌。
- 您想将 Google 驱动器特定文件夹中的文件上传到 OneDrive 中的特定文件夹。
- 文件数量为 10 - 20。
- 文件较小。
来自您的以下回复
I have changed accordingly to: var files = file.getId(); but then I receive such error: TypeError: Cannot read property 'getId' of undefined moveFiles @ srcpt.gs:5 If I use DriveApp.getFiles() or source.getFiles(), I receive such error: Exception: Unexpected error while getting the method or property getFileById on object DriveApp. convToMicrosoft @ code.gs:629 OnedriveApp.uploadFile @ code.gs:460 Appreciated for any help.
- 关于
var files = file.getId();
和If I use DriveApp.getFiles() or source.getFiles(), I receive such error:
,很遗憾,我看不懂。
这样的话,下面的修改怎么样?
修改后的脚本:
function myFunction() {
var prop = PropertiesService.getScriptProperties();
var odapp = OnedriveApp.init(prop);
var source = DriveApp.getFolderById("###"); // Please put your folder ID.
var files = source.getFiles();
while (files.hasNext()) {
var file = files.next();
odapp.uploadFile(file.getId(), "/samplefolder/"); // Please set the destination folder name. In this case, the folder name in OneDrive.
}
}
使用
"/samplefolder"
时会出错。请用/
将文件夹名称括起来,例如"/samplefolder/"
。请注意这一点。当此脚本为运行时,将Google驱动器特定文件夹中的文件复制到OneDrive中
/samplefolder/
的目标文件夹。