SCRIPT spreadsheet.getRange

Bonjour

Actuellement mon script fonctionne lorsque lorsqu'il va chercher dans une cellule (l'ID d'un calendrier) grâce à la fonction spreadsheet.getRange . Je voudrais que mon script aille cherche non pas le contenu d'une cellule mais d'une colonne.

Dans ce fichier je voudrais que l'évènement décrit en B4;C4;D4 aille s'inscrire dans le calendrier dont ID figure en E4. De même je voudrais que l'évènement décrit en B5;C5;D5 aille s'inscrire dans le calendrier dont ID figure en E5; etc.

savez-vous comment je dois modifier mon script?

Bonjour,

.getRange() peut s'utiliser de plusieurs manière :

.getRange('A1') // avec la cellule directement

let row = 5

.getRange('A'+row) // un combiné par exemple lettre + nombre

.getRange(1,1) // premier nombre = ligne, second nombre = colonne

.getRange(1,1,1,1) // premier nombre = ligne départ, second nombre = colonne départ, troisième nombre = nombre de ligne à sélectionner, quatrième nombre = nombre de colonne à sélectionner.

Bonjour Pierre

Merci pour ces explications. J'ai effectivement utilisé spreadsheet.getRange(4,5,3,1). Tous mes évènements en ligne sont pris en compte. Malheureusement ils s'inscrive tous dans le même calendrier, le premier de la colonne calendrier (E4 de mon fichier) alors que je voudrais que l'évènement décrit en B5;C5;D5 aille s'inscrire dans le calendrier dont ID figure en E5; que celui décrit en B6;C6;D6 aille s'inscrire dans le calendrier dont ID figure en E6.

Bonjour,

getRange(4,5,3,1) = la plage E4:E7

Si tu veux utiliser comme paramètre la donnée en E, à partir des données B,C,D tu peux simplifier tu script comme ceci :

const data = sheet.getRange(4,2,3,4).getValues();

ca va donner :

[ [ 'B4', 'C4', 'D4', 'E4' ], [ 'B5', 'C5', 'D5', 'E5' ], [ 'B6', 'C6', 'D6', 'E6' ] ]

Maintenant que tu as toutes tes données, pour chacun des 3 items de la liste tu dois agir sur le calendrier (E) à partir des données B,C,D.

Donc il suffit de boucler sur chaque ligne de donnée et faire l'action sur le calendrier.

Voici le script complet en ex :

function test() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  const data = sheet.getRange(4,2,3,4).getValues();
  data.forEach(function(row){
    let dataB = row[0]
    let dataC = row[1]
    let dataD = row[2]
    let idCalendar = row[3]

    console.log("mettre ici la logique qui permet d'écrire sur le planning id : "+idCalendar+" avec les données des colonnes B : "+dataB+" colonnes C : "+dataC+" colonnes D : "+dataD)

  })
}

Et pour info, ca donne comme log :

09:08:23    Infos    mettre ici la logique qui permet d'écrire sur le planning id : E4 avec les données des colonnes B : B4 colonnes C : C4 colonnes D : D4
09:08:23    Infos    mettre ici la logique qui permet d'écrire sur le planning id : E5 avec les données des colonnes B : B5 colonnes C : C5 colonnes D : D5
09:08:23    Infos    mettre ici la logique qui permet d'écrire sur le planning id : E6 avec les données des colonnes B : B6 colonnes C : C6 colonnes D : D6

Merci Pierre mais je suis incapable, après avoir essayé, d'adapter ce script au mien pour que s'inscrive dans chaque calendrier les évènements.

Bonjour,

Peux tu partager ton fichier si pas d'info sensible, sinon, une copie ?

Bonjour Pierre

Le lien figure dans mon 1er message du 4/4 ci-dessus "ce fichier"

Re, c'était simple :

function evenements_agenda2(){
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getActiveSheet();
  const data = sheet.getRange(4,2,3,4).getValues();
  data.forEach(function(row){
    let heureDebut = row[0]
    let heureFin = row[1]
    let titre = row[2]
    let idCalendar = row[3] 
    CalendarApp.getCalendarById(idCalendar).createEvent(titre,heureDebut,heureFin)
    })
}
image image
Rechercher des sujets similaires à "script spreadsheet getrange"