Google api 使用特定页面设置(边距、方向)通过驱动器API创建文档

Google api 使用特定页面设置(边距、方向)通过驱动器API创建文档,google-api,google-drive-api,google-api-php-client,Google Api,Google Drive Api,Google Api Php Client,我的应用程序已经能够通过驱动API创建Google文档,这样做时,我可以选择标题、数据和元数据。但是我一直在看文档,似乎没有办法设置文档的其他属性,比如创建文档的边距和方向(纵向或横向)。有没有办法做到这一点 在文档中找不到答案后,我唯一能想到的就是使用我的Google帐户登录,转到其中一个创建的文档,单击“页面设置”,然后选择“横向”,最后选择“设置为默认”。我认为,通过在我的谷歌账户中将其设置为默认值,所有使用它创建的文档都可能被创建为景观。但它不起作用。然而,一个可能的原因是,实际创建文档

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


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

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


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

我能想到的最好的方法,这真是一个黑客,就是使用你自己的google docs API,它只能部分使用,并且与官方docs API相关

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);
}
这基本上是一个在您的服务器上运行的web浏览器,可以控制它执行客户端通常在web浏览器上执行的任何操作,如单击按钮、提交表单等,只有在服务器的命令下才能执行,服务器可以通过HTTP请求等命令

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

但无论如何,一旦你登录到你在Puppeter上的谷歌账户,在drive.google.com上,只需停留在该页面上等待

如果服务器收到某种HTTP请求以生成新文档,那么服务器只需单击网页上的“新建文档”按钮,它就会在一个新选项卡中打开新文档,您应该可以使用Puppeter访问该选项卡

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

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


如果您有任何问题,请告诉我有人否决了此答案,但我不明白为什么。当您使用这种方法时,页面方向会切换到横向,并且工作得很好。也许这在驱动API中不起作用(我不知道是否起作用),但它在google应用程序脚本中起作用。