3

我的应用程序已经能够通过 Drive API 创建 Google Docs,这样做时我可以选择标题、数据和元数据。但是我一直在查看文档,似乎无法设置文档的其他一些属性,例如正在创建的文档的边距和方向(纵向或横向)。有没有办法这样做?

在文档中找不到答案后,我唯一能想到的就是使用我的 Google 帐户登录,转到创建的文档之一,单击“页面设置”,然后选择“横向”,最后选择“设置为默认”。我认为通过在我的 Google 帐户中将其设置为默认值,可能会发生使用它创建的所有文档都可能被创建为景观的情况。但它没有用。然而,一个可能的原因是实际创建文档的帐户是服务帐户,而不是我的常规 Google 帐户。我猜这两个帐户虽然被链接,但不是一回事,因此一个帐户的默认值不适用于另一个帐户。有没有办法将“纵向”设置为使用我的服务帐户创建的文档的默认方向?如果不,

4

3 回答 3

1

Drive API 不支持与文档相关的功能,以便您检索/设置有关文档的元数据。

服务帐户是个人 Google 帐户,与您自己的用户帐户没有任何关系。另一方面,您的默认设置仅适用于您。您不能以编程方式设置其他用户的默认值。

于 2013-08-19T11:09:18.807 回答
0

我能想到的最好的方法,这确实是一个 hack,是使用headless chrome 和 pupeteer制作你自己的 google docs API ,它只能部分使用,并与官方 docs API 结合使用。

这基本上是一个在您的服务器上运行的网络浏览器,可以控制它执行客户端通常在网络浏览器上执行的任何操作,例如单击按钮、提交表单等,只有在服务器的命令下,可以命令通过 HTTP 请求等

所以安装puppeteer后,打开chrome浏览器,登录你的google账号,然后用服务器打开google drive,你应该已经登录了账号。如果没有,您可能必须使用服务器逻辑登录帐户,这可能会因两步验证而变得复杂......

但是无论如何,一旦您在 puppeteer 上登录您的 google 帐户,在 drive.google.com 上,只需停留在该页面上并等待。

如果服务器接收到某种 HTTP 请求以创建新文档,则让服务器直接单击网页上的新文档按钮,它应该在新选项卡中打开新文档,您应该能够访问傀儡师。

然后,当它完成时,您可以将 URL 发送回请求服务器,和/或根据之前在 HTTP 请求中接收到的数据,现在更改您的页面设置。

例如,如果在某一时刻(在创建文档之后,或者在创建过程中),有某种消息指定背景颜色,只需手动,在服务器端,单击文件 -> 页面设置,并选择自定义,并以编程方式“键入”十六进制颜色代码等,然后单击确定按钮,然后结束 POST 请求。

如果您有任何问题,请告诉我

于 2020-02-27T01:26:47.990 回答
-1
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();

//turn landscape if portrait
var oldHeight = body.getPageHeight();
if (oldHeight > body.getPageWidth()){
  body.setPageHeight(body.getPageWidth());
  body.setPageWidth(oldHeight);
}
于 2014-08-29T19:42:18.460 回答