Bonjour.

J'ai un google Doc qui me sert de Template pour une création d'un PDF.

Dans ce document, j'ai un tableau qui à pour source un google Sheet.

Quand je fait une modification dans le Sheet, je dois cliquer sur "METTRE A JOUR" au niveau du tableau dans le document google Doc afin que les dernières données saisie dans le Sheet soit ajoutées dans le tableau du Doc.

Etant un Template, et la création du PDF se faisant depuis un Sheet, l'utilisateur ne peut pas aller sur le Doc afin de mettre à jour les informations.

Je cherche donc un script qui me permettrait de mettre à jour ce tableau. (en fait, actuellement mon script ne fait qu'un conversion d'un Doc en PDF et c'est pas ce que je veux).

De plus, j'ai 3 informations (date, ref, po) dans le Template qui devait venir du Sheet mais ces informations ne ce modifient pas.

Mon code suivant peut être simplifié car je n'ai qu'une seule date, ref et po et que le code parcours une feuille mais je verrais plus tard ^^

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var TEMPLATE_ID = 'ID du doc de mon Template';var PDF_FILE_NAME = 'Facture BL'
 
 
function createPdfs() {
 
 
  var ui = SpreadsheetApp.getUi()
 
 
  if (TEMPLATE_ID === '') {    
    ui.alert('L ID du template doit étre renseigné dans le code .gs')
    return
  }
 
 
  var templateFile = DriveApp.getFileById(TEMPLATE_ID)
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('infoTemplate')
  var allRows = activeSheet.getDataRange().getValues()
  var headerRow = allRows.shift()
 
 
  allRows.forEach(function(row) {
 
    createPdf(templateFile, headerRow, row)
 
 
    function createPdf(templateFile, headerRow, activeRow) {
 
      var headerValue
      var activeCell
      var ID = null
      var recipient = null
      var copyFile
      var numberOfColumns = headerRow.length
      var copyFile = templateFile.makeCopy()      
      var copyId = copyFile.getId()
      var copyDoc = DocumentApp.openById(copyId)
      var copyBody = copyDoc.getActiveSection()
 
 
      for (var columnIndex = 0; columnIndex < numberOfColumns; columnIndex++) {
 
        headerValue = headerRow[columnIndex]
        activeCell = activeRow[columnIndex]
        activeCell = formatCell(activeCell);
 
        copyBody.replaceText('%' + headerValue + '%', activeCell)
 
        if (headerValue === FILE_NAME_COLUMN_NAME) {
 
          ID = activeCell
 
        } else if (headerValue === EMAIL_COLUMN_NAME) {
 
          recipient = activeCell
        }
      }
 
      copyDoc.saveAndClose()
      var newFile = DriveApp.createFile(copyFile.getAs('application/pdf'))  
      copyFile.setTrashed(true)
 
 
      if (PDF_FILE_NAME !== '') {
        newFile.setName(PDF_FILE_NAME)
      } else if (ID !== null){
        newFile.setName(ID)
      }
 
 
      if (RESULTS_FOLDER_ID !== '') {
        DriveApp.getFolderById(RESULTS_FOLDER_ID).addFile(newFile)
        DriveApp.removeFile(newFile)
      }
    } // createPdfs.createPdf()
 
 
  })
 
 
  ui.alert('Nouveau PDF créé')
 
 
  return
 
} // createPdfs()
En espérant avoir été suffisamment explicatif.

Merci d'avance pour votre aide.