从Google App Script应用程序调用Google Drive SDK

时间:2012-12-29 05:58:43

标签: google-apps-script google-drive-api google-docs-api

我一直在这里转圈,完全迷茫了自己。我需要一些帮助。

我(尝试)为客户编写一个概念很简单的应用程序。他想要一个带按钮的谷歌写文档。谷歌驱动器帐户有几个文件夹,每个文件夹与几个人共享。当他在其中一个文件夹中删除一个新文件时,他希望能够打开这个写文件,这个文件是他的电子邮件的模板。他点击按钮,系统调用Google云端硬盘SDK https://developers.google.com/drive/manage-changes中的更改服务,获取自上次检查后添加的文件列表,然后提取该文件的人员列表共享,并使用写文件作为模板向该人员列表发送一封电子邮件,说明他们的文件已准备就绪。

太容易了,对吧?

我首先查看了Google App Script API中的内置函数。我在DocsList类中找到了这个方法https://developers.google.com/apps-script/class_docslist#find。问题是查询的描述只是说"查询字符串"。所以一开始我尝试了Drive SDK查询参数,这些参数是

var files = DocsList.find("modifiedDate > 2012-12-20T12:00:00-08:00.");

它没有用。这让我相信这是对内容的简单全文搜索。那还不够好。

这导致我尝试从App Script应用程序中调用Drive SDK方法。太棒了,我们需要一个OLap 2身份验证。很容易。在脚本引用中找到了对象,然后碰到了我的墙。

客户端ID和客户端密钥。

你知道,当我创建一个真正的服务帐户时,应用程序脚本中的olap控件并不知道如何处理加密的json并来回传递它。然后当我尝试创建并使用已安装的应用程序密钥时,我会收到身份验证错误,因为控件再次出现,不知道如何处理工作流程。最后,当我尝试创建一个Web应用程序密钥时,我无法理解,因为我没有网站主机名或重定向URI。而我无法使用应用程序密钥功能,因为我需要使用文件OLap 2。

我使用了匿名olap一段时间了,但是为了试图找出一些代码,每天都达到了匿名调用的极限,那不会起作用,因为这个人会不停地按下这个按钮到了那一天。

我现在已经在桌子上敲了5个小时。我在这里需要一些帮助,有人能给我一个方向吗?

PS,是的,我知道我可以使用数据库控件并将整个文件列表加载到内存中,并将其与数据库中的文件列表进行比较。问题是,我们正在谈论成千上万的文件。坏主意。

1 个答案:

答案 0 :(得分:0)

我不再使用DocsList了 - DriveApp应该是more reliable replacement。某些命令已更改,因此请使用searchFiles而不是查找。这应该更有效(他们甚至使用像你这样的查询作为例子)。