2012-12-29 98 views
4

我一直在这里围绕着圈子,完全糊涂了我自己。我需要一些帮助。从Google应用程序脚本应用程序调用Google Drive SDK应用程序

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

SO,很简单吧?

我首先查看了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,是的,我知道我可以使用数据库控件并将整个文件列表加载到内存中,并将其与数据库中的文件列表进行比较。问题在于,我们正在谈论数以万计的文件。馊主意。

+3

我不相信。我只是想出了它。我创建了一个Web应用程序客户端代码,并将https://google.com作为JavaScript创建者,并将重定向留空并且工作。去搞清楚。 – scphantm

+0

工作的搜索字符串是'var files = DocsList.find('after:2013-04-06T01:14');' –

+0

当我生成一个“Web应用程序的客户端ID”,然后尝试进入谷歌。com作为“授权JavaScript起源”,答案是:PostMessage Origin“google.com”无效。 – koma

回答

0

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

相关问题