Ala*_*lls 12 google-apps-script google-drive-api
有四种方法可以创建新文件:
它们都被称为服务.Drive API称为高级服务.那么,你应该使用哪一个?我不知道,这取决于.此问题与Drive API高级服务有关.
我不想使用2或3个服务来完成工作.我想用其中一个.但是要决定使用哪一个,我需要知道所有这些的功能和选项.如果最简单和最容易使用的将会做我想要的一切,那么我将使用它.
如果我可以使用Drive API创建新文件,但我需要使用DriveApp服务将我使用Drive API创建的文件移动到我想要的文件夹,那么在特定情况下使用Drive API毫无意义.
我可以通过Google Apps脚本.gs代码在我的Google云端硬盘中创建一个新文件,但该文件会写入主"我的云端硬盘".我想将文件直接写入子文件夹.我目前的代码是:
var fileNameSetA = 'someFile.jpg';
var uploadedBlobA = an image uploaded with a file picker;
var fileTestDrive = {
title: fileNameSetA,
mimeType: 'image/jpeg'
};
fileTestDrive = Drive.Files.insert(fileTestDrive, uploadedBlobA);
Run Code Online (Sandbox Code Playgroud)
即使代码有效,我也不知道为什么语法是这样的,我找不到告诉我原因的文档.我可以找到一个属性列表:
在title:和mimeType:可选属性的部分Request Body.从示例中,可选属性显然放在一个键:值配对对象中.那么,语法是:
Drive.Files.insert(optional properties, content);
Run Code Online (Sandbox Code Playgroud)
还有必需的查询参数:
uploadType- > media,multipart,resumable
但是我没有uploadType在示例代码中看到任何指定的必需参数.所以,我不了解Google的文档.
是否可以在Apps Script .gs代码文件中使用Google Advanced Drive服务直接写入特定驱动器?我该怎么做?
Luc*_* Wa 11
创建新文件的最简单方法是使用DriveApp纯Google Apps脚本附带的文件:
var dir = DriveApp.getFolderById("{dir_id}");
var file = dir.createFile(name, content);
Run Code Online (Sandbox Code Playgroud)
如果您不知道确切目录的ID,则可以通过其名称获取该文件夹:
var dir = DriveApp.getFoldersByName(name).next();
Run Code Online (Sandbox Code Playgroud)
该next()是有原因getFoldersByName()返回其名称匹配给定值的所有目录的集合.
另请查看DriveApp文档:https://developers.google.com/apps-script/reference/drive/drive-app
小智 10
也许这有点晚了,但通过查看REST API文档,它表明您可以使用Drive.Files.insert插入任何文件夹.您只需在要插入的文件的属性中添加文件夹的ID,如下所示:
var file = {
title: 'myFile',
"parents": [{'id':folder.getId()}], //<--By setting this parent ID to the folder's ID, it creates this file in the correct folder.
mimeType: 'image/png'
};
Run Code Online (Sandbox Code Playgroud)
可以从共享的链接使用谷歌驱动GUI来获得文件夹ID或者如图这里.(例如,使用右侧的执行功能.)
或者,您可以通过替换folder.getID()使用来按名称访问该文件夹Drive.getFoldersByName('name of folder').
这很有用,因为Drive.Files.insert()接受参数的同时Drive.createFile()和Drive.createFolder()不接受.
对于文档INSERT的驱动器API,在这个环节发现:
有一个部分用于请求正文。Insert的可选属性之一是parents[]。括号 [] 表示可以指定父项列表。父母 []的文档说明了这一点:
包含此文件的父文件夹的集合。设置此字段会将文件放入所有提供的文件夹中。插入时,如果未提供文件夹,则文件将放置在默认根文件夹中。
所以, 。. . 使用在Drive API 中插入,。. . . 可以将新文件直接写入子文件夹。这是可能的。
现在,Google Drive SDK的命名和语法,HTTP 请求与 Apps Script 中的不同。
在文件中调用 Drive API HTTP 请求的语法.gs是以下三种之一:
上面列表中显示的语法来自 Apps 脚本代码编辑器内的自动完成下拉列表。如果您键入Drive.Files.,将出现可能的方法列表。我在在线文档的任何地方都找不到有关语法的信息。
那么,parents[]可选属性去哪儿了?嗯,它不是一个 Blob,所以我们可以排除它。它是FILE resource, 或OBJECT optionalArgs。 optionalArgs表示它是一个object,但FILE resource实际上也是一个object。
在示例中,FILE resource被构造为键:值对对象。
| 归档时间: |
|
| 查看次数: |
21274 次 |
| 最近记录: |