0

我正在尝试在 Google 幻灯片中创建一个游戏,并且需要有一个系统,如果用户在某张幻灯片上,则会更改一个变量。这怎么可能?

我已经尝试过使用 SlidesApp.getActivePresentation().getSlides() SlidesApp.getActivePresentation().getSelection().getCurrentPage();

var currentPresentationSlide = SlidesApp.getActivePresentation().getSlides()[3];
var currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

var selection = SlidesApp.getActivePresentation().getSelection();


if (currentPage = currentPresentationSlide) {
  var shape = currentPresentationSlide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
  var textRange = shape.getText();
  textRange.setText('demo');
}

我希望幻灯片将文本框(演示)放在幻灯片上(在本例中为幻灯片 3)它甚至没有将文本框放在任何地方。

4

3 回答 3

1
  • 用户正在通过演示模式进行演示。
  • 在上述情况下,您要检索用户停留的当前页面。

我理解你这样的问题。不幸的是,在现阶段,由于以下原因,这无法实现。

  1. 目前还没有确认非所有者用户是否处于演示模式的方法。
  2. 演示模式还没有事件触发器。
  3. 当您运行脚本时,您正在打开的页面将成为当前页面。这不是其他用户的页面。运行脚本时,将检索您正在打开的页面。
于 2019-01-11T01:44:30.520 回答
0

我有一个类似的请求,我想通过单击将当前日期和时间插入到演讲者笔记中。

这是供您参考的可行脚本。

function addCurrentDateTimeToTheNotes() {
  var now = new Date();

  var selection = SlidesApp.getActivePresentation().getSelection();
  var selectionType = selection.getSelectionType();

  // Logger.log('selectionType: ' + selectionType);

  var currentPage;
  var currentSlide;
  var speakerNotesShape;
  var speakerNotesText;
  if (selectionType == SlidesApp.SelectionType.CURRENT_PAGE) {
    currentPage = selection.getCurrentPage();
  }else if (selectionType == SlidesApp.SelectionType.PAGE) {
    var pageRange = selection.getPageRange();
    currentPage = pageRange.getPages()[0];
  }else if (selectionType == SlidesApp.SelectionType.PAGE_ELEMENT) {
    currentPage = selection.getCurrentPage();
  }else if (selectionType == SlidesApp.SelectionType.TEXT) {
    currentPage = selection.getCurrentPage();
  }

  if (currentPage != null) {
    currentSlide = currentPage.asSlide();
    speakerNotesShape = currentSlide.getNotesPage().getSpeakerNotesShape();
    speakerNotesTextRange = currentSlide.getNotesPage().getSpeakerNotesShape().getText();
    speakerNotesText = speakerNotesTextRange.asRenderedString();

    if( !speakerNotesText || speakerNotesText.trim() === '' ){
      speakerNotesTextRange.setText('Created at: \r\n' + now);
    }else{
      speakerNotesTextRange.setText('Modified at: \r\n' + now + '\r\n\r\n' + speakerNotesText);
    }
  }
}
于 2022-01-15T05:52:39.897 回答
0

要检索用户正在查看的当前页面,请使用getSelection()getCurrentPage()方法,如下所示:

var currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

注意:这是 Google Apps 脚本文档的摘录,您现在可以在 Google 中轻松找到。这篇 SO 帖子在 Google 中也得到了很好的引用,但似乎令人困惑。考虑查看Google Apps 脚本文档以了解有关您可以做什么的更多信息。

然后,当您检查用户是否在特定幻灯片上时,请执行以下条件检查:

var specialSlide = SlidesApp.getActivePresentation().getSlides()[3];
var currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

if (currentPage.getObectId() === specialSlide.getObjectId()) {
  // User is on a particular page
}
于 2021-07-26T09:07:37.710 回答