javascript - 如何使用应用程序脚本向 Google 幻灯片演示文稿添加连接线?

标签 javascript google-apps-script google-slides-api google-slides

我正在尝试遵循 Google Slides API 引用 Material ; 'Lines' 但我一定错过了一些东西。我已经使用脚本成功添加了矩形形状,但现在我想用一条线连接它们。这是我到目前为止所拥有的:

function addConnections()
{
  var myPresentation = SlidesApp.getActivePresentation()
  var presentationId = myPresentation.getId();
  var slideId = myPresentation.getSlides()[0].getObjectId()

  var requests = []

    requests.push(
    {
      createLine: 
      {
        lineProperties: 
        {
          startConnection: 
          {
            connectedObjectId: 'queryD200',
            connectionSiteIndex: 3
          },
          endConnection: 
          {
            connectedObjectId: 'queryD201',
            connectionSiteIndex: 0
          }
        },
        lineType: 'CURVED_CONNECTOR_2'
      }
    })

  Slides.Presentations.batchUpdate({requests: requests}, presentationId);

}

我得到的错误是: “requests[0].create_line”处的未知名称“lineType”:找不到字段。 “requests[0].create_line”处的未知名称“lineProperties”:找不到字段。

但这些是谷歌在其文档中使用的确切字段名称。 我尝试了带引号和不带引号的两种方法。请帮忙!谢谢你

最佳答案

我相信您的目标如下。

  • 您想要在 Google 幻灯片上用一条线连接 2 个形状。
  • 您希望使用 Slides API 和 Google Apps 脚本来实现此目的。

对于这个,这个答案怎么样?

修改点:

  • createLine 中没有 lineProperties 属性。
  • LineProperties 中没有 lineType 属性。
  • 在您的请求正文中,未使用 fields 属性。
  • 为了用一条线连接两个形状,在您的情况下,以下流程怎么样?
    1. 使用createLine创建线条对象。
    2. 使用lineProperties更新线条对象。
      • lineProperties 可用于使用 UpdateLinePropertiesRequest 的现有线条对象。

修改后的脚本:

当你的脚本修改后,它会变成如下。

function addConnections() {
  var myPresentation = SlidesApp.getActivePresentation()
  var presentationId = myPresentation.getId();
  var slideId = myPresentation.getSlides()[0].getObjectId();

  var lineObjectId = "sampleline001";
  var startShape = "queryD200";
  var endShape = "queryD201";

  var requests = [
    {createLine: {
      objectId: lineObjectId,
      lineCategory: "CURVED",
      elementProperties: {pageObjectId: slideId, size: {height: {magnitude: 1 ,unit: "PT"}, width: {magnitude: 1, unit: "PT"}}}
    }},
    {updateLineProperties: {
      objectId: lineObjectId,
      lineProperties: {startConnection: {connectedObjectId: startShape}, endConnection: {connectedObjectId: endShape}},
      fields: "startConnection,endConnection"
    }}
  ];
  Slides.Presentations.batchUpdate({requests: requests}, presentationId);
}

示例脚本:

作为另一种模式,您还可以使用 Slides service 来实现此目的而不是幻灯片 API。

function addConnections() {
  var myPresentation = SlidesApp.getActivePresentation()
  var presentationId = myPresentation.getId();
  var slide = myPresentation.getSlides()[0];
  var slideId = slide.getObjectId();

  var startShape = "queryD200";
  var endShape = "queryD201";

  var line = slide.insertLine(
    SlidesApp.LineCategory.CURVED,
    slide.getPageElementById(startShape).asShape().getConnectionSites()[0],
    slide.getPageElementById(endShape).asShape().getConnectionSites()[0]
  );
}

结果:

当以上两个脚本针对 2 个形状运行时,可以获得以下结果。

enter image description here

注意:

  • 我不确定形状对象 ID queryD200queryD201 是否正确。所以请小心这一点。

引用文献:

关于javascript - 如何使用应用程序脚本向 Google 幻灯片演示文稿添加连接线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61532614/

相关文章:

javascript - 删除/字符 javascript 后剩余的字符串

google-apps-script - 谷歌幻灯片 : newly inserted table not found

google-apps-script - 谷歌幻灯片 : Select a slide from Apps Script

google-apps-script - 如何使用谷歌应用程序脚本仅将句子的一部分加粗?

google-apps-script - 在 Google 幻灯片的布局上添加点划线

javascript - 当用户在输入文本框中键入内容时,绑定(bind)丢失的一种方式

php - jquery 将值发布到 php

javascript - Express (Node.js) - 有条件地包含 CSS 和 JS 文件

google-apps-script - 如何通过 Google App Script 在 Google Sheet Range 中获取绝对 A1 表示法

javascript - 更改 Google 日历中事件的颜色