如何将 link 附加到 Apps 脚本上的形状或文本框?

How to attach a link to a shape or text box on Apps Script?

我知道如何向幻灯片添加形状,但我知道在 Google 幻灯片中,您可以 link 单击该文本框后显示另一张幻灯片。是否可以在应用程序脚本中创建一个形状,然后将 link 附加到它?

我查看了 API 文档,对是否可行感到困惑。

这是一个 Sheets/Slides 插件。

我需要做的是,当按下我创建的添加菜单上的按钮时,在 Google 幻灯片中创建一个幻灯片,并使用表格中的信息。我想创建一个文本框,当您单击它时 link 到幻灯片放映中的另一张幻灯片。我只是想让它全部自动化。

如果可以的话,我该如何将它应用到我创建的形状中?

var elementId = 'MyTextBox_001';
  var pt350 = {
    magnitude: 350,
    unit: 'PT'
  };
  var requests = [{
    createShape: {
      objectId: elementId,
      // tried linkUrl: "link";
      shapeType: 'TEXT_BOX',
      elementProperties: {
        pageObjectId: "slide_001_001",

        size: {
          height: pt350,
          width: pt350
        },
        transform: {
          scaleX: 1,
          scaleY: 1,
          translateX: 350,
          translateY: 100,
          unit: 'PT'
        }
      }
    }
  },

// Insert text into the box, using the supplied element ID.
{
   insertText: {
     objectId: elementId,
     // tried linkUrl: "link";
     insertionIndex: 0,
     text: SpreadsheetApp.getActiveSheet().getRange(3,2).getValue()
    }
 }];

// have tried elementId.setLinkUrl(linkHere);

是的,这是可能的。签出 Extending Google Slides and shape.setLinkUrl(url)

您可以使用以下代码创建幻灯片、添加形状并向其添加 link:

  var presentationId =  "<YOUR_PRESENTATION_ID>";
  var newSlideId = Utilities.getUuid();
  var newElementId = Utilities.getUuid();
  var pt350 = {
    magnitude: 350,
    unit: 'PT'
  };
  var requests = [
    {
      createSlide: {
        objectId: newSlideId
      }
    },
    {
      createShape: {
        objectId: newElementId,
        shapeType: 'TEXT_BOX',
        elementProperties: {
          pageObjectId: newSlideId,
          size: {
            height: pt350,
            width: pt350
          },
          transform: {
            scaleX: 1,
            scaleY: 1,
            translateX: 350,
            translateY: 100,
            unit: 'PT'
          }
        }
      }
    },
    {
      insertText: {
        objectId: newElementId,
        insertionIndex: 0,
        text: SpreadsheetApp.getActiveSheet().getRange(3,2).getValue()
      }
    },
    {
      updateShapeProperties: {
        objectId: newElementId,
        shapeProperties: {
          link: {
            pageObjectId: "<YOUR_PAGE_ID>"
          }
        },
        fields: "link"
      }
    }];

请注意,您需要演示文稿的 ID 和目标页面的 ID。如果愿意,您可以使用幻灯片索引作为目的地 (more information here)。

如果您在创建幻灯片插件时需要更多帮助,可以访问 this example

如果您对此主题有任何其他问题,请随时回复。

此致