S W*_*use 10 google-sheets google-apps-script google-drive-api
我正在尝试使用通过Google表单发布的信息创建文档,然后在创建文档后,我想将文档移动到共享文件夹中供人们查看.
目前,我的脚本会从Google表单链接的电子表格中获取所有信息.
使用该信息我使用以下代码来创建文档:
var targetFolder = DriveApp.getFolderById(TARGET_FOLDER_ID);
var newDoc = DocumentApp.create(requestID + " - " + requestSummary);
Run Code Online (Sandbox Code Playgroud)
这是在我的Google云端硬盘根文件夹中成功创建文档,但我似乎无法将其移动到我想要移动到的位置.
我看过很多帖子建议使用像targetFolder.addFile(newDoc)这样的东西,但这不起作用,同样我看过像newDoc.addToFolder(targetFolder)这样的例子但是这对我来说不起作用.
似乎人们已经询问过的所有在线问题都使用了以前不再适用的API版本,并且这些方法不适用于新的DriveApp功能.
如果可能,我想要的是创建上面的新文档,以便我可以使用脚本编辑内容,然后将该文件移动到共享文件夹.(据我所知,目前没有"移动"功能,所以制作副本并删除旧副本就足够了).
Ami*_*wal 21
如果我们制作文件的副本并删除原始文件,则会更改文件URL,并且不会保留文件共享设置.
在Drive中,可以使用DriveApp服务的.addFolder()方法将文件添加到多个文件夹.您可以将文件添加到目标文件夹,然后从直接父文件夹中删除该文件.
function moveFiles(sourceFileId, targetFolderId) {
var file = DriveApp.getFileById(sourceFileId);
file.getParents().next().removeFile(file);
DriveApp.getFolderById(targetFolderId).addFile(file);
}
Run Code Online (Sandbox Code Playgroud)
Aar*_*han 12
这是我的第一篇文章!我知道这已经回答了几次,但我在处理项目时遇到了这个问题,在查看Apps Script文档时,我想出了一个简洁的方法.some1的答案的变化.
var file = DriveApp.getFileById(fileid);
DriveApp.getFolderById(folderid).addFile(file);
DriveApp.getRootFolder().removeFile(file);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
看起来现在有一个带有 Drive API(高级服务)的moveTo()函数,可以轻松移动文件:
移动到(目的地)
将此项目移动到提供的目标文件夹。
当前用户必须是文件的所有者,或者至少具有项目当前父文件夹的编辑权限,才能将项目移动到目标文件夹。
这是我用来将所有文件从“屏幕截图输入”文件夹移动到“屏幕截图处理”文件夹的一些代码:
var inputFolder = DriveApp.getFolderById(SCREENSHOT_INPUT_FOLDER_ID);
var processedFolder = DriveApp.getFolderById(SCREENSHOT_PROCESSED_FOLDER_ID);
var files = inputFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
file.moveTo(processedFolder);
}
Run Code Online (Sandbox Code Playgroud)
文件或文件夹类中没有直接方法将文件从 Google Drive 中的一个文件夹移动到另一个文件夹。正如您提到的,您可以使用makeCopy()方法将文件复制到另一个文件夹,然后使用setTrashed()删除它,代码应如下所示:
var targetFolder = DriveApp.getFolderById(TARGET_FOLDER_ID);
var newDoc = DocumentApp.create(requestID + " - " + requestSummary); // Creates the Document in the user's Drive root folder
// Modify the new document here, example:
// var body = newDoc.getBody();
// body.appendParagraph("A paragraph.");
// newDoc.saveAndClose();
var driveFile = DriveApp.getFileById(newDoc.getId()); // Gets the drive File
driveFile.makeCopy(newDoc.getName(), targetFolder); // Create a copy of the newDoc in the shared folder
driveFile.setTrashed(true); // sets the file in the trash of the user's Drive
Run Code Online (Sandbox Code Playgroud)
编辑:
再想一想并考虑到鲁本的评论。我同意实施阿米特的答案是更好的做法。
| 归档时间: |
|
| 查看次数: |
16373 次 |
| 最近记录: |