使用特定页面设置(页边距、方向)通过Drive API创建文档



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

在文档中找不到答案后,我唯一能想到的就是用我的谷歌账户登录,转到其中一个创建的文档,点击"页面设置",然后选择"横向",最后选择"设置为默认值"。我想,通过在我的谷歌账户中将其设置为默认值,可能会发生所有使用它创建的文档都会被创建为Landscapes。但它没有起作用。然而,一个可能的原因是,实际创建文档的帐户是一个服务帐户,而不是我的常规谷歌帐户。我想这两个账户在链接时不是同一回事,所以其中一个的默认值不适用于另一个。有没有办法将"纵向"设置为使用我的服务帐户创建的文档的默认方向?如果没有,解决方案是停止使用我的服务帐户创建文档,并开始使用我的常规谷歌帐户创建文档吗,这样我应用于它们的默认值也适用于新创建的文档?

Drive API不支持用于检索/设置文档元数据的文档相关功能。

服务帐户是单独的谷歌帐户,与您自己的用户帐户没有任何关系。另一方面,您的默认设置将仅适用于您。您不能用程序设置其他用户的默认值。

我能想到的最好的方法,这真的是一个破解,就是使用headless chrome和pupeer制作你自己的google docs API,这只能部分使用,并与官方docs API结合使用。

这基本上是一个在你的服务器上运行的网络浏览器,它可以被控制来做客户端通常在网络浏览器上做的任何事情,比如点击按钮、提交表单等,只有在服务器的命令下,才能通过HTTP请求等命令。

因此,在安装了puppeteer之后,打开chromium浏览器,登录到你的谷歌帐户,然后用服务器打开谷歌驱动器,你应该已经登录到该帐户了。如果没有,您可能必须使用服务器逻辑登录帐户,这可能会因两步验证而变得复杂。。。

但不管怎样,一旦你登录了你在puppeteer上的谷歌账户,在drive.google.com上,只需停留在那个页面上等待。

如果服务器收到某种制作新文档的HTTP请求,那么让服务器直接点击网页上的新文档按钮,它就会在一个新的选项卡中打开新文档,您应该可以使用puppeteer访问该选项卡。

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

例如,如果在某个时刻(无论是在创建文档之后,还是在创建文档期间),出现某种指定背景颜色的消息,只需手动,在服务器端,单击文件->页面设置,然后选择自定义,然后以编程方式"键入"十六进制颜色代码等,然后单击确定按钮,然后结束POST请求。

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

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);
}

最新更新