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

4
我在这里转圈了,完全搞混了。我需要帮助。
我正在为客户编写一个应用程序,概念很简单。他想要一个带有按钮的Google写文档。Google驱动器帐户有几个文件夹,每个文件夹都与几个人共享。当他将新文件放入其中一个文件夹时,他希望能够打开此写文件,该文件是他电子邮件的模板。他单击按钮,系统调用Google Drive 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一段时间,但在努力尝试理解代码时,达到了每天匿名调用的限制。这行不通,因为这个人将会不断地按这个按钮。
我已经在这个问题上苦思冥想了五个小时了。 我需要一些帮助,有人能指导我吗?
另外,我知道我可以使用数据库控件并将整个文件列表加载到内存中,然后将其与数据库中的文件列表进行比较。 问题是,我们正在讨论成千上万个文件。 这是一个糟糕的主意。

3
我不相信。我刚刚想通了一个问题。我创建了一个网络应用程序客户端代码,使用https://google.com作为JavaScript的发起者,并将重定向留空,结果竟然可行。真是让人难以置信。 - scphantm
一个可用的搜索字符串是 var files = DocsList.find('after:2013-04-06T01:14'); - Peter
当我生成一个“Web应用程序的客户端ID”,然后尝试将google.com输入为“授权JavaScript来源”,答案是:PostMessage Origin“google.com”无效。 - koma
1个回答

0

我不再使用DocsList - DriveApp应该是一个更可靠的替代品。一些命令已经改变,所以用searchFiles代替find。这应该更有效地工作(他们甚至使用像你的查询作为例子)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接