Objectif : Lors de l'exécution du script, je veux que le script puisse obtenir la date de la semaine (doit être dimanche et non lundi) et la définir dans une cellule. Par exemple, nous sommes aujourd'hui le 20 mars 2021 et la semaine de départ que j'ai définie est le dimanche, je souhaite donc sortir le 2021-03-14 dans une cellule particulière.

Recherche : J'ai recherché des questions précédentes sur Internet, mais je n'ai pu trouver que des exemples tels que l'obtention du numéro de semaine ou du jour de la semaine et rien de vraiment sur la date de la semaine. Je suis désolé si cela existe déjà.

Et j'ai seulement pu trouver comment obtenir le mois en cours (exemple : getMonth() + 1) ou l'année en cours (exemple : getFullYear()). Mais pas la semaine en cours.

Question : Comment procédons-nous dans Google Apps Script ? Doit-on faire des calculs complexes ?

0
John 20 mars 2021 à 11:16

2 réponses

Meilleure réponse

Inspiré de la réponse de Raynos ici :

Essaye ça:

function getSunday() {
  var curr = new Date();
  var first = curr.getDate() - curr.getDay();
  var sunday = Utilities.formatDate(new Date(curr.setDate(first)), "UTC", "YYYY-MM-dd");
  var sh = SpreadsheetApp.getActiveSheet();
  sh.getRange("A1").setValue(sunday);
}

Production:

enter image description here

1
Nikko J. 22 mars 2021 à 22:05

J'ai une fonction simple qui met un simple calendrier sur une feuille de calcul. Si vous souhaitez modifier la façon dont vous affichez le calendrier, lisez simplement le premier commentaire.

function calendarMonthlyForYear() {
  var dA=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
  var oA=['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];//you can change the first day of the week by shifting the array
  //var oA=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];//you can change the first day of the week by shifting the array
  var dObj={};
  oA.forEach(function(e,i){dObj[e]=i});
  var mA=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  var cA=[];
  var bA=[];
  var wA=[null,null,null,null,null,null,null];
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("Calendar");
  if(!sh){var sh=ss.insertSheet('Calendar');}
  sh.clear();
  var year=new Date().getFullYear();
  for(var i=0;i<12;i++) {
    var month=new Date(year,i,1).getMonth();
    var dates=new Date(year,i+1,0).getDate();
    cA.push([mA[month],dates,'','','','','']);
    bA.push(['#ffffff','#ffffff','#ffffff','#ffffff','#ffffff','#ffffff','#ffffff']);
    cA.push(oA)
    bA.push(['#ffff00','#ffff00','#ffff00','#ffff00','#ffff00','#ffff00','#ffff00']);
    var d=[];
    var ddd=[];
    for(var j=0;j<dates;j++) {
      var day=new Date(year,i,j+1).getDay();
      var date=new Date(year,i,j+1).getDate(); 
      if(day<wA.length) {
        wA[dObj[dA[day]]]=date;
      }
      //if(day==wA.length-1 || date==dates) {
      if(dA[day]==oA[wA.length-1] || date==dates) {
        cA.push(wA);
        bA.push(['#ffffff','#ffffff','#ffffff','#ffffff','#ffffff','#ffffff','#ffffff']);
        wA=['','','','','','',''];
      } 
    }  
  }
  sh.getRange(1,1,cA.length,cA[0].length).setValues(cA);
  //sh.getRange(1,1,cA.length,cA[0].length).setBackgrounds(bA);
  sh.getRange(1,1,cA.length,cA[0].length).setBackground('#ffffff');
}

function daysInMonth(m=0) {
  return new Date(new Date().getFullYear(),m+1,0).getDate();
}

Je l'ai fait manuellement mais vous pouvez le faire script

1
Cooper 20 mars 2021 à 18:23