Fonction permettant de faire une capture d'écran
Salut tout le monde !
Je travaille actuellement sur une feuille google remplie de nombreux dessins (étoiles, carrés, cases…) et le but de ce document est d'extraire les cellules sélectionnées et de les enregistrer sous forme de fichier PDF. J'ai trouvé quelque chose qui fonctionne mais il y a un problème : certains dessins qui ne sont pas initialement dans les cellules sélectionnées, apparaissent sur les fichiers PDF et ne sont pas censés être ici.
Les cellules sélectionnées à l'origine ressemblent à ceci.
Et quand j'exécute mon code, j'ai ceci.
La boîte jaune et la moitié de la bleue en haut (dans le bandeau date) ne sont pas censées être ici et appartiennent aux cellules au-dessus.
Et voici le code que j'utilise : il permet d'ouvrir une boîte de dialogue d'impression avec les cellules sélectionnées et de télécharger l'image en PDF
var PRINT_OPTIONS = {
'size': 7, // paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B
'fzr': false, // repeat row headers
'portrait': false, // false=landscape
'fitw': true, // fit window or actual size
'gridlines': false, // show gridlines
'printtitle': false,
'sheetnames': false,
'pagenum': 'UNDEFINED', // CENTER = show page numbers / UNDEFINED = do not show
'attachment': false
}
var PDF_OPTS = objectToQueryString(PRINT_OPTIONS);
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Impression...')
.addItem('Impression de la plage sélectionné', 'printSelectedRange')
.addToUi();
}
function printSelectedRange() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getActiveRange();
var gid = sheet.getSheetId();
var printRange = objectToQueryString({
'c1': range.getColumn() - 1,
'r1': range.getRow() - 1,
'c2': range.getColumn() + range.getWidth()-1,
'r2': range.getRow() + range.getHeight()-1
});
var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;
var htmlTemplate = HtmlService.createTemplateFromFile('js');
htmlTemplate.url = url;
SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(20).setWidth(100), 'Impression en cours');
}
function objectToQueryString(obj) {
return Object.keys(obj).map(function(key) {
return Utilities.formatString('&%s=%s', key, obj[key]);
}).join('');
}Cependant le code que j'utilise sélectionne des dessins qui appartiennent à des cellules qui sont au dessus de 3 ou 4 lignes et je ne comprend pas pourquoi elles sont prises en compte.
Est ce que quelqu'un aurai une solution pour palier à ce problème de mauvaise sélection des données ?
Merci d'avance de votre aide !