Dari pelayan ke GAS: laluan pemindahan data
P粉141911244
P粉141911244 2023-09-18 23:38:40
0
2
595

Saya mempunyai fungsi untuk aplikasi web yang menyalin templat, ia menerima nama templat dan id templat sebagai parameter.

code.gs

Fungsi menjana_(idTemplate, nama) {

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) // 这些值是我想要传递给客户端的。
}

Fungsi ini adalah apa yang saya gunakan untuk menghantar nama dan URL yang disalin kepada pelanggan. Saya tahu bahawa dalam JavaScript, untuk mengembalikan berbilang parameter, ia mesti dilaksanakan melalui tatasusunan.

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

Ini ialah skrip klien yang saya gunakan untuk cuba mendapatkan semula data replika yang dijana:

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>

Saya menggunakan butang untuk menguji sama ada ia dihantar dengan betul, tetapi saya tidak dapat memaparkan data, konsol penyemak imbas menunjukkan batal apabila menunjukkan log.

Apa yang boleh saya lakukan salah? Di pihak pelanggan saya telah mencuba google.script.run.withSuccessHandler(copyValues).getFile(nameF,linkF); tetapi tidak berjaya.

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

Ini adalah butang yang menyala create(),用于创建复制的脚本,以及getValues(); untuk mendapatkan nama dan URL salinan itu. Salinan templat berjaya dibuat, tetapi nama fail dan URL tidak diambil pada klien.

P粉141911244
P粉141911244

membalas semua(2)
P粉147045274

Cuba ini:

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="= t1 ?>" /><br>
    <input type="text" id="txt2" name="text2" value="= t2 ?>" /><br>
</body>
</html>

Dialog:

P粉951914381

Ini adalah contoh mendapatkan maklumat fail.

Seperti yang ditunjukkan dalam tangkapan skrin di bawah, apabila saya mengklik butang, nama fail dan URL akan dipaparkan dalam kotak input.

Kod.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>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan