Impression automatique en fonction d'une liste de validation

Bonjour à tous,

J'exporte des données d'un logiciel dans une feuille.

Cette feuille est traitée et revoie les informations dans une autre feuille (Impression) qui a une mise en page et qui n'affiche que les résultats en fonction d'une liste de validation. Un 3ème onglet est une base de données des codes valides et du type de codes.

Le besoin pour moi et mes collègues et de pouvoir imprimer la feuille "Impression" pour chaque code de la liste de validation si type 1 ou si type 2.

Ci-dessous un exemple anonymisé du document, je ne maîtrise pas suffisamment les scripts pour faire ça

https://docs.google.com/spreadsheets/d/131FiEDaltKXddVar2i06xAAmcS8nX4qwFdd0zzwtyC4

Par avance merci pour votre aide

J'ai trouvé ce code

Fichier JS

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': true,            // repeat row headers
  'portrait': true,        // 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(10).setWidth(100), 'Impression en cours');
}

function objectToQueryString(obj) {
  return Object.keys(obj).map(function(key) {
    return Utilities.formatString('&%s=%s', key, obj[key]);
  }).join('');
}

Fichier HTML js.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <script>
  window.open('<?=url?>', '_blank', 'width=800, height=600');
  google.script.host.close();
</script>
  </body>
</html>

J'ai pu imprimer en local mais une seule fois.... Toute autre tentative échoue...

De plus l'idée est que l'impression se fasse toute seule en balayant tous les codes de type 1 depuis la liste déroulante...

Bonjour,

J'ai trouvé ce code

J'ai pu imprimer en local mais une seule fois.... Toute autre tentative échoue...

De plus l'idée est que l'impression se fasse toute seule en balayant tous les codes de type 1 depuis la liste déroulante...

Merci pour le code, super ! j'avoue ne pas avoir répondu car je n'imprime jamais.

J'ai fait un essai, et plusieurs, nickel ! donc je ne sais pas d'où vient ton problème ? de l'imprimante ?

Steelson a écrit :

J'ai fait un essai, et plusieurs, nickel ! donc je ne sais pas d'où vient ton problème ? de l'imprimante ?

Peut être lié au fait que ce ne sont que des imprimantes réseaux, je n'ai pas une seule imprimante USB... Mais je doute quand même que ce soit le problème.

Ne pas imprimer serait pour nous une super avancé, cela étant, pour le type de document dont je parle, juridiquement, il doit être en version papier pour être valable...

Une solution de contournement serait peut-être d'éditer en pdf sur le drive d'abord, et ensuite, manuellement, imprimer chaque document. Je ne peux malheureusement rie faire sur l'aspect imprimante étant donné que je ne sais pas reproduire l'erreur.

Non, nous ne gagnerons pas de temps, l'idée est bien d'optimiser la tâche.

Le fichier d'exemple est tout simple mais le nombre de code à traiter est de l'ordre d'une 100aine pour le type1 et 40aine pour le type 2, ça dépend des jours.

Il faudrait limite faire un pdf unique avec saut de page à chaque changement de code.

Je suis preneur de toutes les solutions tant que nous pouvons optimiser le temps passé à cette tâche journalière.

Rechercher des sujets similaires à "impression automatique fonction liste validation"