Yeps !
J’ai un classeur qui compte environ 80 feuilles (onglets). Ceux-ci sont créés à partir d’une liste et d’un script.
Comment pourrais-je faire pour imprimer seulement 74 de ces feuilles ? Sauf erreur de ma part, il n’y a pas de commande apps script qui permet de gérer les impressions …
Merci d’avance …
Yeps!
Pas de problème ! Voici comment imprimer une partie des onglets d’un classeur dans Google Sheets :
Ouvrez le classeur Google Sheets contenant les onglets que vous souhaitez imprimer.
Cliquez sur l’onglet que vous souhaitez imprimer. Si vous souhaitez imprimer plusieurs onglets, maintenez la touche « Ctrl » (Windows) ou « Cmd » (Mac) enfoncée tout en cliquant sur les onglets.
Cliquez sur « Fichier » dans la barre de menu en haut de l’écran.
Sélectionnez « Imprimer » dans le menu déroulant.
Dans la fenêtre « Imprimer », choisissez les paramètres d’impression souhaités, tels que l’imprimante, la mise en page, etc.
Sous « Pages », choisissez l’option « Certaines feuilles ».
Cochez les cases à côté des onglets que vous souhaitez imprimer.
Cliquez sur le bouton « Imprimer » pour lancer l’impression.
Voilà, vous devriez maintenant avoir imprimé la partie des onglets souhaités dans votre classeur Google Sheets.
for (var i = 0; i < onglets.length; i++) {
var sheet = spreadsheet.getSheetByName(onglets);
printOptions[‹ sheetIds ›].push(sheet.getSheetId());
}
var printer = SpreadsheetApp.getActiveSpreadsheet().getPrintService().getPrinters()[0];
var printJob = printer.createJob();
printJob.setPrintSettings(printOptions);
printJob.print();
for (var i = 0; i < onglets.length; i++) {
var sheet = spreadsheet.getSheetByName(onglets);
sheet.hideSheet();
}
}
Merci, je vais plutôt tester le script, car le nombre d’onglets est environ 80 … Tandis que je pourrais alimenter la table des noms d’onglets avec une boucle.
Je te tiens au courant …
Verifier bien l orthographe et Attention à la casse (respectez les minuscules MAJUSCULES .
j’ai recherché avec Chat GPT l’erreur et voici :
L’erreur « TypeError: Cannot read properties of null (reading ‹ showSheet ›) » est générée lorsque vous essayez d’accéder à une feuille de calcul qui n’existe pas dans votre classeur Google Sheets. Plus précisément, cela se produit lorsque vous appelez la méthode
showSheet()
sur une feuille de calcul qui n’est pas trouvée.Voici quelques raisons courantes pour lesquelles cela peut se produire, ainsi que des solutions possibles :
Le nom de la feuille de calcul est mal orthographié ou incorrect - Vérifiez que le nom de la feuille de calcul est correctement orthographié et qu’il correspond exactement à ce qui est indiqué dans votre code.
La feuille de calcul a été supprimée - Si la feuille de calcul a été supprimée, vous ne pourrez pas y accéder en appelant la méthode
showSheet()
. Assurez-vous que la feuille de calcul existe toujours dans votre classeur.
3. La feuille de calcul est cachée - Si la feuille de calcul est cachée, vous ne pourrez pas y accéder en appelant la méthode
showSheet()
. Pour résoudre ce problème, vous pouvez afficher la feuille de calcul en utilisant la méthode
showSheet()
.[/b]
4. Il y a plusieurs feuilles de calcul avec le même nom - Si plusieurs feuilles de calcul ont le même nom, votre code peut ne pas être en mesure de déterminer laquelle afficher.
Yeps,
J’ai refait l’essai en faisant un copier/coller des noms de feuilles et l’erreur persiste.
Si je mets en commentaire la partie « showSheet » et la partie « hideSheet », j’ai alors le message suivant : TypeError : Cannot read properties of null (reading ‹ getSheetId ›)
Je suis désolé d’arriver si tard pour le dire, mais le code qui a été fourni un peu plus haut est… eh bien, faux. Au sens où il ne fonctionnera jamais. Ma présomption est que ce code a été créé avec ChatGPT, or ChatGPT est… disons, loin d’être parfait.
Il n’existe pas de moyen depuis Apps Script de déclencher une impression sur votre imprimante, sauf si votre imprimante est capable d’imprimer depuis un mail, auquel cas vous pouvez lui envoyer un mail pour déclencher l’impression en question. Fut un temps, il existait Google Cloud Print, mais le service a disparu fin 2020.
Le mieux que l’on puisse faire, c’est adapter ce code fourni directement par Google comme code d’exemple pour transformer une liste d’onglets en pdfs. C’est assez simple et ça donne quelque chose comme ça (en imaginant que le code Apps Script soit mis dans **Extensions > Apps Script **et non pas en script stand-alone) :
const SHEET_NAMES = [
"1",
"2",
"4"
];
const EXTRACT_FOLDER_ID = "123exemple456identifiant";
/**
* Take all the sheets from SHEET_NAMES and export them to PDF to the folder with the id EXTRACT_FOLDER_ID
*/
function printSheets() {
let folder = DriveApp.getFolderById(EXTRACT_FOLDER_ID);
let ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
for(let sheetName of SHEET_NAMES){
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
Logger.log(sheetName);
Logger.log(sheet);
if(sheet){
createPDF(ssId, sheet, sheetName, folder);
}
}
}
/**
* Creates a PDF for the customer given sheet.
* @param {string} ssId - Id of the Google Spreadsheet
* @param {object} sheet - Sheet to be converted as PDF
* @param {string} pdfName - File name of the PDF being created
* @return {file object} PDF file as a blob
*/
function createPDF(ssId, sheet, pdfName, folder) {
const fr = 0, fc = 0, lc = 9, lr = 27;
const url = "https://docs.google.com/spreadsheets/d/" + ssId + "/export" +
"?format=pdf&" +
"size=7&" +
"fzr=true&" +
"portrait=true&" +
"fitw=true&" +
"gridlines=false&" +
"printtitle=false&" +
"top_margin=0.5&" +
"bottom_margin=0.25&" +
"left_margin=0.5&" +
"right_margin=0.5&" +
"sheetnames=false&" +
"pagenum=UNDEFINED&" +
"attachment=true&" +
"gid=" + sheet.getSheetId() + '&' +
"r1=" + fr + "&c1=" + fc + "&r2=" + lr + "&c2=" + lc;
const params = { method: "GET", headers: { "authorization": "Bearer " + ScriptApp.getOAuthToken() } };
const blob = UrlFetchApp.fetch(url, params).getBlob().setName(pdfName + '.pdf');
const pdfFile = folder.createFile(blob);
Logger.log(pdfFile);
return pdfFile;
}
Il y a un petit temps d’exécution (les pdfs arrivent parfois après quelques minutes dans le dossier en question), mais c’est fonctionnel.
Bonjour,
Merci pour ta réponse qui conforte le fait que l’on ne trouve pas trace d’informations de gestion d’impression par app script dans les recherches.
Depuis, j’ai effectivement opté pour un export pdf qui lui, fonctionne plutôt bien. Même si, comme tu le dis, il y a parfois un temps d’attente pour voir les fichiers dans le répertoire ad hoc.
Merci pour ton aide