Maison  >  Questions et réponses  >  le corps du texte

Du serveur au GAS : le chemin du transfert de données

J'ai une fonction pour une application web qui copie un modèle, elle reçoit le nom du modèle et l'identifiant du modèle en paramètres.

code.gs

Fonction generate_(idTemplate, nom) {

var template = DriveApp.getFileById(idTemplate);
 var folder = '文件夹id';

var copyName = name + "-" + CurrentDate;// 添加创建日期
  var copy;
  try {
    copy = template.makeCopy(copyName, folder);
  } catch (e) {
    Logger.log(e.stack);
  }
var nameF = copy.getName();
var linkF = copy.getUrl()
Logger.log(nameF,linkF)
  return getFile(nameF,linkF) // 这些值是我想要传递给客户端的。
}

Cette fonction est ce que j'utilise pour transmettre le nom et l'URL copiés au client. Je sais qu'en JavaScript, pour renvoyer plusieurs paramètres, il doit être implémenté via un tableau.

function getFile(nameF,linkF){
var array = [nameF,linkF];
return array;
}

Voici le script client que j'utilise pour essayer de récupérer les données répliquées générées :

HTML

<script>
        function getValues(){
          google.script.run.withSuccessHandler(copyValues).getFile();
        }
        function copyValues(values){
         
          var nameF = values[0];
          var urlF = values[1];
        console.log(values);
         console.log(nameF);
          console.log(urlF);
          console.log("值成功传递了");
        }
    </script>

J'utilise un bouton pour tester s'il est passé correctement, mais je ne parviens pas à afficher les données, la console du navigateur affiche null lors de l'affichage du journal.

Qu'est-ce que j'aurais pu faire de mal ? Côté client j'ai essayé google.script.run.withSuccessHandler(copyValues).getFile(nameF,linkF); mais ça n'a pas marché.

<button id="btn" onclick="create(); getValues();"

C'est le bouton qui se déclenche create(),用于创建复制的脚本,以及getValues(); pour obtenir le nom et l'URL de cette copie. La copie du modèle est créée avec succès, mais le nom de fichier et l'URL ne sont pas récupérés sur le client.

P粉141911244P粉141911244397 Il y a quelques jours538

répondre à tous(2)je répondrai

  • P粉147045274

    P粉1470452742023-09-19 13:18:54

    Essayez ceci :

    GS :

    function launchmydialog() {
      let t = HtmlService.createTemplateFromFile("ah2");
      t.t1 = "one";
      t.t2 = "two";
      SpreadsheetApp.getUi().showModelessDialog(t.evaluate(),"Dialog");
    }

    HTML :

    <!DOCTYPE html>
    <html>
    <head>
      <base target="_top">
    </head>
    <body>
        <input type="text" id="txt1" name="text1" value="" /><br>
        <input type="text" id="txt2" name="text2" value="" /><br>
    </body>
    </html>

    Dialogue:

    répondre
    0
  • P粉951914381

    P粉9519143812023-09-19 10:15:01

    Ceci est un exemple d'obtention d'informations sur un fichier.

    Comme le montre la capture d'écran ci-dessous, lorsque je clique sur le bouton, le nom du fichier et l'URL seront affichés dans la zone de saisie.

    Code.gs

    function showTest() {
      setFileInfo();
      let html = HtmlService.createHtmlOutputFromFile("HTML_Test");
      SpreadsheetApp.getUi().showModalDialog(html,"Test");
    }
    
    function setFileInfo() {
      let id = "1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE";
      let name = "Copy of Template";
      let template = DriveApp.getFileById(id);
      let copy = template.makeCopy(name);
    
      let properties = PropertiesService.getDocumentProperties();
      let property = [copy.getName(),copy.getUrl()];
      properties.setProperty("FileInfo",JSON.stringify(property));
    }
    
    function getFileInfo() {
      let properties = PropertiesService.getDocumentProperties();
      let property = properties.getProperty("FileInfo");
      if( property ) {
        return JSON.parse(property);
      }
      return "Error";
    }

    HTML_Test.html

    <!DOCTYPE html>
    <html>
      <head>
      </head>
      <body>
        <input id="getFileInfoButton" type="button" onclick="getFileInfoClicked()" value="获取文件信息"><br>
        <input id="getFileInfoText" type="text">
        <script>
          function getFileInfoClicked() {
            try {
              google.script.run.withSuccessHandler( 
                function (value) {
                  document.getElementById("getFileInfoText").value = value;
                }
              ).getFileInfo();
            }
            catch(err) {
              alert(err);
            }
          }
        </script>
      </body>
    </html>

    répondre
    0
  • Annulerrépondre