4

我一直在这里转圈,完全把自己弄糊涂了。我需要一些帮助。

我正在(试图)为客户编写一个概念上很简单的应用程序。他想要一个带有按钮的谷歌写文档。google drive 帐户有几个文件夹,每个文件夹与几个人共享。当他在其中一个文件夹中放置一个新文件时,他希望能够打开这个写入文件,这个文件是他的电子邮件模板。他点击按钮,系统调用 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 有一段时间了,但在试图弄清楚代码的努力中达到了每天匿名呼叫的限制,那是行不通的,因为这家伙会在一天中不断地按下这个按钮.

我已经为此在桌子上敲了 5 个小时。我需要一些帮助,有人可以给我一个方向吗?

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

4

1 回答 1

0

我不会再使用 DocsList - DriveApp 应该是更可靠的替代品。某些命令已更改,因此使用searchFiles代替 find 。这应该更有效(他们甚至使用像您这样的查询作为示例)。

于 2013-10-08T00:54:23.410 回答