[WEBAPP] Lien dynamique

Bonjour à tous.

Maintenant mon planning personnel fonctionnelle j'attaque la partie administration. Je trouve donc plus simple de le faire via une webapp.

Cependant je rencontre un problème de lien entre les pages.

Au final il y aura deux page sur cette webApp.

INDEX et Modify ( cette dernière servira a modifié les information d'un collaborateur je rajoute donc un paramètre id dans l’appel de la page)

voici le code.gs

function doGet(e) {
   if (!e.parameter.page)
        {
          return HtmlService.createTemplateFromFile('Index').evaluate();
       }
    else if (e.parameter['page'] == 'Modify')
        {
          var htmlOutput =  HtmlService.createTemplateFromFile('Modify');
          htmlOutput.id = e.parameter('id');
          return htmlOutput.evaluate();
        }
}

function getScriptUrl() {
 var url = ScriptApp.getService().getUrl();
 return url;
}

//LISTE DU PERSONEL
function getColabData(){
  var spreadSheetId = "1QXnSsTg8zliGpo40xA6qk39yMGiMVu_yHpf2PRyDTYE"; //CHANGE
  var dataRange     = "BDD PERSONEL!A2:F"; //CHANGE
  var range   = Sheets.Spreadsheets.Values.get(spreadSheetId,dataRange);
  var values  = range.values;
  return values;
}

Je liste donc tout mon personnel dans l''index.

<!DOCTYPE html>
<html lang="fr">
<html>
<head>
<?!=include('Style'); ?>

<?var url = getScriptUrl();?>
<?var tableData = getColabData();?>
<br>
<div class="container">
<table id="dtBasicExample" class="table table-striped table-bordered table-sm" cellspacing="0" width="100%">
  <thead>
    <tr>
      <th class="th-sm">NOM
      </th>
      <th class="th-sm">PRENOM
      </th>
      <th class="th-sm">DEBUT CONTRAT
      </th>
      <th class="th-sm">FIN CONTRAT
      </th>
      <th class="th-sm">TYPE CONTRAT
      </th>
      <th class="th-sm">MODIFICATION
      </th>
      <th class="th-sm">SUPPRESSION
      </th>
    </tr>
  </thead>

  <tbody>
       <?for(var i = 0; i < tableData.length; i++) { ?>
    <tr>
      <td><?= tableData[i][0] ?></td>
      <td><?= tableData[i][1] ?></td>
      <td><?= tableData[i][2] ?></td>
      <td><?= tableData[i][3] ?></td>
      <td><?= tableData[i][4] ?></td>
      <td>
        <a class="btn btn-primary" href="<?=url ?>&page=Modify&id=<?= tableData[i][5]?>" role="button">MODIFIER</a>
      </td>

      <td><button type="button" class="btn btn-warning">SUPPRESSION</button></td>
         <? } ?>
    </tr>
  </tbody>
</table>
</div>

  </body>
</html>

Je liste très bien les information le problème vient du lien :

 href="<?=url ?>&page=Modify&id=<?= tableData[i][5]?>"

Le lien me semble correct au survol mais la page est toujours inexistante. La page Modify.html existe bien.

image image

Merci d'avance pour votre lecture.

Cordialement.

Bonjour,

function doGet(e) {
   if (!e.parameter.page)
        {
          return HtmlService.createTemplateFromFile('Index').evaluate();
       }
    else if (e.parameter['page'] == 'Modify')
        {
          var htmlOutput =  HtmlService.createTemplateFromFile('Modify');
          htmlOutput.id = e.parameter('id');
          return htmlOutput.evaluate();
        }
}

je ne suis pas sûr du résultat, mais ce qui m'interpelle c'est que tu utilises 2 écritures différentes pour page et id

e.parameter['page']
e.parameter('id')

Bonjour Steelson.

Merci pour votre réponse.

Après vérification la syntaxe est bien :

e.parameter['page']
e.parameter['id]

Malheureusement cela ne règle pas le problème.

image

cordialement.

Bonjour.

Je met en cause la fonction geturl()

Quand je tape directement l'url cela fonctionne.

Le lien générer avec la fonction est différent

/a/**/macros/s/

/a/macros/**/s/

Quand je tape directement l'url cela fonctionne.

c'est ce que j'allais demander aussi ...

que représente ** dans ta réponse ? l'id du script ?

bingo, tu as raison

https://issuetracker.google.com/issues/235862472

https://issuetracker.google.com/issues/170799249?pli=1

il faut mettre l'url en dur dans le code en attendant la résolution du problème

Bonjour,

Ok pour mettre en dur.

Seulement lors du click sur le bouton, je me retrouve en erreur 403.

Si je fais un clique droit et ouvrir dans un nouvel onglet, je tombe sur la bonne page...
Seulement lors du click sur le bouton, je me retrouve en erreur 403.

Si je fais un clique droit et ouvrir dans un nouvel onglet, je tombe sur la bonne page...

clic droit sur le bouton ? alors en fait l'action sur le bouton est peut-être mal configurée. Pour ma part j'aurais mis

  • directement le lien de type <a href="____">modifier</a>,
  • sinon une fonction, quelque chose comme
<input type="button" value="MODIFIER" onclick="modifier(<?= url ?>,<?= tableData[i][5] ?>)">

puis

    <script>
      function modifier(url,id) {
        // ouvrir la page ...
      }
    </script>

Bonjour,

Cela fonctionne superbement bien.

Par contre cela montre aussi ses contrainte .

Merci.

   <input type="button" class="btn btn-primary" value="MODIFIER" onclick="link_modify(<?= url ?>,<?= tableData[i][5] ?>)">
      </td>

      <td><button type="button" class="btn btn-warning">SUPPRESSION</button></td>
         <? } ?>
    </tr>
  </tbody>
</table>
</div>

  </body>
    <script>
      function link_modify(url,id) {
        window.open(url+"page=Modify&id="+id,"_top");
      }
    </script>

ravi que cela fonctionne

Cela fonctionne superbement bien.

Par contre cela montre aussi ses contrainte .

quelles contraintes ?

Rechercher des sujets similaires à "webapp lien dynamique"