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

时间:2019-04-18 16:13:57

标签: google-apps-script google-slides

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

谢谢

1 个答案:

答案 0 :(得分: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);
  }
}

参考文献: