Обновление дня недели с помощью скриптов Google - PullRequest
0 голосов
/ 14 декабря 2018

Я создал следующий код для запуска ручного сценария, чтобы изменить день в нескольких экземплярах в презентации Google Slides.Если день понедельник, сценарий меняет его на четверг.Если это четверг, другой скрипт меняет его на понедельник.

function futurebriefthurs() {
  var currdate = new Date();
  var daystochange = 3;
  var newbriefday = new Date(currdate.getFullYear(), currdate.getMonth(), currdate.getDate() + daystochange);
  var NextBrief = Utilities.formatDate(new Date(newbriefday), "GMT-7", "EEEEE");
  var pattern = "\\b\\d{1,2}/\\d{1,2}/\\d{4}\\b"; 
  var slides = SlidesApp.getActivePresentation().getSlides();
  var slidesLength = slides.length;
  for (var i = 0; i < slidesLength; i++) {  
    var shapes = slides[i].getShapes();
    var shapesLength = shapes.length;
  for (var j = 0; j < shapesLength; j++) {
     if (shapes[j].getDescription() == "$NextBrief") {
       var textRange = shapes[j].getText();
       textRange.clear();
       textRange.insertText(0, NextBrief);
      }
    }
  }
} 

function futurebriefmon() {
  var currdate = new Date();
  var daystochange = 4;
  var newbriefday = new Date(currdate.getFullYear(), currdate.getMonth(), currdate.getDate() + daystochange);
  var NextBrief = Utilities.formatDate(new Date(newbriefday), "GMT-7", "EEEEE");
  var pattern = "\\b\\d{1,2}/\\d{1,2}/\\d{4}\\b"; 
  var slides = SlidesApp.getActivePresentation().getSlides();
  var slidesLength = slides.length;
  for (var i = 0; i < slidesLength; i++) {  
    var shapes = slides[i].getShapes();
    var shapesLength = shapes.length;
    for (var j = 0; j < shapesLength; j++) {
      if (shapes[j].getDescription() == "$NextBrief") {
        var textRange = shapes[j].getText();
        textRange.clear();
        textRange.insertText(0, NextBrief);
      }
    }
  } 
}  

Я хотел бы иметь скрипт, который запускается при открытии презентации, который проверяет текущий день и вносит те же изменения автоматически.Мы используем эту презентацию в запланированные дни, поэтому минимальная необходимость смены дня на понедельник и четверг.

В какой-то момент я хотел бы иметь возможность вносить изменения на основе записей Календаря Google, но это на другой день.: -)

1 Ответ

0 голосов
/ 15 декабря 2018

Я думаю, что-то вроде этого будет работать.

Вам просто нужно запустить createOpenTrigger () при установке кода.Я предполагал, что все остальное в коде работает.

function createOpenTrigger(){
  var triggers=ScriptApp.getProjectTriggers();
  var tA=[];
  for(var i=0;i<triggers.length;i++){tA.push(triggers[i].getHandlerFunction());}
  if(tA.indexOf('futureBrief')!=-1){
    ScriptApp.newTrigger('futureBrief').forSpreadsheet(sheet).onOpen().create();
  }
}  

function futureBrief() {
  var currdate = new Date();
  var dtcA=[0,4,0,0,3,0,0];
  var daystochange=dtcA[currdate.getDay()];
  if(daystochange>0){
    var newbriefday = new Date(currdate.getFullYear(), currdate.getMonth(), currdate.getDate() + daystochange);
    var NextBrief = Utilities.formatDate(new Date(newbriefday), "GMT-7", "EEEEE");
    var pattern = "\\b\\d{1,2}/\\d{1,2}/\\d{4}\\b"; 
    var slides = SlidesApp.getActivePresentation().getSlides();
    var slidesLength = slides.length;
    for (var i = 0; i < slidesLength; i++) {  
      var shapes = slides[i].getShapes();
      var shapesLength = shapes.length;
      for (var j = 0; j < shapesLength; j++) {
        if (shapes[j].getDescription() == "$NextBrief") {
          var textRange = shapes[j].getText();
          textRange.clear();
          textRange.insertText(0, NextBrief);
        }
      }
    }
  }
} 
...