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

时间:2013-08-19 10:02:43

标签: google-api google-drive-api google-api-php-client

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

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

3 个答案:

答案 0 :(得分:1)

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

服务帐户是单独的Google帐户,与您自己的用户帐户无关。另一方面,您的默认设置仅适用于您。你不能以编程方式设置其他用户的默认值。

答案 1 :(得分:0)

我能想到的最好的方法,实际上是一种破解,是使用headless chrome and pupeteer来制作自己的google docs API,该API只能与正式docs API结合使用,并且只能部分使用。

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

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

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

如果服务器收到某种形式的HTTP请求以制作新文档,则只需让服务器从字面上单击网页上的“新文档”按钮,它就应该在新标签页中打开新文档,您应该可以可以使用puppeteer进行访问。

然后,您可以根据先前在HTTP请求中接收到的数据,将URL发送回请求服务器,和/或立即更改页面设置。

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

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

答案 2 :(得分:-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);
}