1

在 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());

谢谢,

4

1 回答 1

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

如果我的理解是正确的,那么使用文本框的“标题”怎么样?请认为这只是几个答案之一。修改后的示例脚本如下。在本次修改中,文本框的标识名称由文本框的标题使用。该脚本的流程如下。

  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);
  }
}

参考:

于 2019-04-19T00:50:31.973 回答