将今天的日期添加到演示幻灯片中--已添加但无法更新

Adding today's date to presentation slide--added but can't update

在 Google 幻灯片中,我可以使用此脚本将今天的日期添加到我的第一张幻灯片,但是下次运行时,它会添加另一个文本框,该日期位于另一个日期之上,请参阅两个日期互相重叠,弄得一团糟。我找不到如何在写入新日期之前删除日期或覆盖日期。

写日期的代码:

function myFunction() {
 var date = new Date();
 var months = ["January", "February", "March", "April", "May", "June", 
 "July", "August", "September", "October", "November", "December"]
 var slide = SlidesApp.getActivePresentation().getSlides()[0];
 var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 300, 200, 300, 60);
 var textRange = shape.getText();
 textRange.setText(months[date.getMonth()]+' '+date.getDate()+', '+date.getFullYear());

谢谢,

  • 您想在幻灯片的第一页放置一个包含日期的文本框。
  • 您想在文本框存在时覆盖放置日期的文本框。

如果我的理解是正确的,使用文本框的"title"怎么样?请将此视为几个答案之一。修改后的示例脚本如下。本次修改中,文本框的标题使用了文本框的标识名称。该脚本的流程如下

  1. 检索幻灯片第一页的所有形状。
  2. 通过文本框的标题获取放置日期的文本框
  3. 如果标题的文本框已经存在,则文本框的文本被日期覆盖,是文本。
  4. 如果带有标题的文本框不存在,则通过输入日期插入新的文本框。

修改后的脚本:

function myFunction() {
  var title = "sampleTitle"; // Please set this.

  var date = new Date();
  var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  var slide = SlidesApp.getActivePresentation().getSlides()[0];
  var date = months[date.getMonth()]+' '+date.getDate()+', '+date.getFullYear();
  var shapes = slide.getShapes();
  var s = shapes.filter(function(e) {return e.getTitle() == title});
  if (s.length > 0) {
    s[0].getText().setText(date);
  } else {
    var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 300, 200, 300, 60).setTitle(title);
    var textRange = shape.getText();
    textRange.setText(date);
  }
}

参考文献: