Log de participation à une activité, saisie multiple

Bonjour,

J'aimerais créer un log pour tracer les participations de membres, à des activités.

Une liste de tous les participants est faite entre A1 et K10 (110 membres max)

La description des activités est faite ligne 18, incluant la date et des critères distinctifs.

Il y a une case à cocher pour s'assurer que l'on a vérifié les infos, et de ne pas garder une cellule en cours d'édition lorsqu'on clique sur le bouton de la macro.

Lorsqu'on clique sur le bouton, il faut que dans la feuille "LOGS", les informations de la ligne 18 soit saisie pour chaque membre : s'il y a 110 participants, il faut donc 110 lignes.

J'arrive à log les infos de la ligne 18, mais je n'arrive pas à ce qu'une ligne par membre soit saisie.

// Log datas
//

function log_data () {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var source = ss.getRange ("Report!A18:F18");
  var sheet = ss.getSheetByName("REPORT");
  var sheet2 = ss.getSheetByName("LOGS");
  var members = ss.getRange("A1").getValue();
  var date = ss.getRange("A18").getValue();
  var type = ss.getRange("B18").getValue();
  var subtype = ss.getRange("C18").getValue();
  var structure = ss.getRange("D18").getValue();
  var name = ss.getRange("E18").getValue();
  var comment = ss.getRange("F18").getValue();

  if ((sheet.getRange('E22').isChecked()) && type!=="" && subtype!=="" && structure!=="" && name!=="")
    {
    sheet2.appendRow(source.getValues()[0]);
    ss.getRange('B18:F18').setValue('');
    ss.getRange('E22').setValue('FALSE');
    Browser.msgBox(' All data has been logged ')
    }
  else
  {
    Browser.msgBox(' Please check your input ')
  }
}

Voici un partage sur mon fichier

https://docs.google.com/spreadsheets/d/1y9_QPqPpQQ3tDBoPP-OKt7TE_TtXkUJ_4rNOF2eCfXs/edit?usp=sharing

Si quelqu'un pouvait m'aider à résoudre ce problème

D'avance, merci

Bonjour,

si j'ai bien compris

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var report = ss.getSheetByName('REPORT')
  var log = ss.getSheetByName('LOGS')
  var event = report.getRange('A18:F18').getDisplayValues().flat()
  var result=[]
  report.getRange('A1:K10').getValues().flat().filter(p => p!='').forEach(p => {
    result.push([p,event[0],event[1],event[2],event[3],event[4],event[5]])
  })
  log.getRange(2,1,result.length,result[0].length).setValues(result)
}

Bonjour Steelson,

Merci pour ta réponse, ça fonctionne parfaitement !

Ah non, je n'avais pas vu, mais ça écrase les données précédentes,

il faudrait qu'elles se placent à la suite dans le log à chaque fois

comme ceci ...

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var report = ss.getSheetByName('REPORT')
  var log = ss.getSheetByName('LOGS')
  var event = report.getRange('A18:F18').getDisplayValues().flat()
  var result = []
  report.getRange('A1:K10').getValues().flat().filter(p => p != '').forEach(p => {
    result.push([p, ...event])
  })
  log.getRange(+log.getLastRow() + 1, 1, result.length, result[0].length).setValues(result)
}

Merci beaucoup

Rechercher des sujets similaires à "log participation activite saisie multiple"