pour tenir compte de la liste des participants
changer B12 en B12:B17 dans l'onglet paramètres ligne 7
// ajouter service Google Sheets API
const folderID = 'l id du dossier de stockage des pdf'
const idDest = 'id du fichier qui sert à réaliser les fiches en pdf'
const ss = SpreadsheetApp.getActiveSpreadsheet();
const source = ss.getSheetByName('Fiche journalière');
const rngDest = ss.getSheetByName('Paramètres').getRange('B1:B').getValues().flat().filter(r => r != '')
const destination = 'Fiche journalière'
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem('👉 Editer en pdf et stocker', 'editionsPDF')
.addToUi();
}
function editionsPDF() {
source.getDataRange().getDisplayValues().forEach((r, i) => {
if (r[0] == 'FALSE' && r[1] != '') {
reporterValeurs(+i + 1)
}
})
}
function reporterValeurs(row) {
const ranges = []
const values = []
rngDest.forEach((c, i) => {
if (c.includes(':')) {
var ligne = /([0-9]+)/g.exec(c)[0]
var colonne = /([A-Z]+)/g.exec(c)[0]
source.getRange(row, +i + 2).getValue().split(',').forEach((cell, j) => {// on commence à la colonne B
ranges.push(`'${destination}'!${colonne + (+ligne + j)}`)
values.push(`${cell}`)
})
} else {
ranges.push(`'${destination}'!${c}`)
values.push(`${source.getRange(row, +i + 2).getValue()}`) // on commence à la colonne B
}
})
const data = ranges.map((e, i) => ({ range: e, values: [[values[i]]] }));
Sheets.Spreadsheets.Values.batchUpdate({ data, valueInputOption: "USER_ENTERED" }, idDest);
SpreadsheetApp.flush()
// sortie pdf de la feuille
const fileDest = SpreadsheetApp.openById(idDest)
const filename = 'Fiche journalière de fonctionnement ' + Utilities.formatDate(new Date(source.getRange('B' + row).getValue()), Session.getScriptTimeZone(), "dd/MM/yyyy hh:mm") + '.pdf'
const url = "https://docs.google.com/a/mydomain.org/spreadsheets/d/"
+ idDest
+ "/export?exportFormat=pdf&gid="
+ fileDest.getSheetByName(destination).getSheetId()
+ "&access_token=" + ScriptApp.getOAuthToken();
const blob = UrlFetchApp.fetch(url).getBlob().setName(filename);
const file = DriveApp.getFolderById(folderID).createFile(blob);
fileDest.getSheetByName('GED').appendRow([Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd/MM/yyyy hh:mm"), file.getId(), file.getUrl(), file.getName()])
source.getRange(row, 1).setValue(true) // indicateur en colonne A
}