【发布时间】:2019-12-27 14:10:06
【问题描述】:
我一直在从事一个项目,该项目需要使用 PHP 将文本和其他类型的元素插入到 Google Docs 文档中。我可以使用以下代码插入文本:
$requests = [];
```
$requests[] = new \Google_Service_Docs_Request(
['insertText' => ['text' => 'Text to insert',
'location' => ['index' => $insertionIndex],
],
]);
```
$batchUpdateRequest = new \Google_Service_Docs_BatchUpdateDocumentRequest(['requests' => $requests]);
$docsService->documents->batchUpdate($documentID, $batchUpdateRequest);
我也可以通过类似的调用插入分页符:
$requests = [];
```
$requests[] = new \Google_Service_Docs_Request(
['insertPageBreak' => ['location' => ['index' => $insertionIndex],
],
]);
```
$batchUpdateRequest = new \Google_Service_Docs_BatchUpdateDocumentRequest(['requests' => $requests]);
$docsService->documents->batchUpdate($documentID, $batchUpdateRequest);
以上两种方法都可以正常工作(并且根据 Google 的建议,当我执行多次插入时,我正在向后工作)。我需要做的是在文档中添加一条水平线。我知道 Google Docs 允许手动插入它们并且 Apps Script 支持 insertHorizontalRule 但 Docs API 似乎没有等效项。我在这里、Google 和 API 文档中进行了搜索,但找不到任何参考。有人可以告诉我是否可能吗?如果可能,正确的请求类型是什么?
没有记录的插入方式似乎也很奇怪,但是您可以查询现有文档的内容,并且文档中的任何内容都会作为其结构的一部分报告给您。
为了清楚起见,我试图将一个 Google Doc 的内容附加到另一个。如果有人知道比逐个使用源文档元素并创建将这些元素添加到目标文档的请求更好的方法,那将绕过处理插入水平规则的需要。
【问题讨论】:
-
很遗憾,目前阶段,Google Docs API 中似乎还没有添加水平线的方法,而“horizontalRule”可以通过documents.get 获取。 Docs API 现在正在增长。所以这可能会在未来的更新中添加。作为当前的解决方法,使用 Google Apps 脚本创建的 Web 应用程序作为 API 怎么样?这样,可以使用 php 添加水平规则。如果这不是您想要的方向,我很抱歉。
-
感谢@Tanaike,虽然不是我想听到的,但我怀疑是这样。希望他们在不久的将来会添加。我会看看你的建议,我也会看看可能插入一个带有顶部边框线的薄表来代替水平线。请不要道歉,您已经回答了问题并给出了可能的解决方法,这可能对其他人和我都有帮助。如果您将您的评论作为答案重新发布,我会将其设为已接受的答案。
-
感谢您的回复。我使用 Web Apps 作为答案发布了解决方法。你能确认一下吗?而且我认为您的
I'm also going to look at possible inserting a thin table with a top border line as a replacement for a horizontal rule.建议可以用作解决方法。这可以使用当前的 Docs API 来实现。所以我把它作为一个答案。也请您确认一下吗?
标签: php google-apps-script google-docs google-docs-api