從伺服器到GAS:資料傳遞的途徑
P粉141911244
P粉141911244 2023-09-18 23:38:40
0
2
561

我有一個用於網頁應用的函數,可以複製模板,它接收模板的名稱和模板的id作為參數。

程式碼.gs

#函數generate_(idTemplate, 名稱) {

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

這個函數是我用來將複製的名稱和URL傳遞給客戶端的。我知道在JavaScript中要傳回多個參數,必須透過陣列來實現。

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

這是我用來嘗試檢索產生的複製資料的客戶端腳本:

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>

我使用一個按鈕來測試是否正確傳遞,但是我無法顯示這些數據,瀏覽器控制台顯示日誌時顯示null。

我可能做錯了什麼?在客戶端我已經嘗試了google.script.run.withSuccessHandler(copyValues).getFile(nameF,linkF);,但沒有運作。

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

這是按鈕,它觸發了create(),用於建立複製的腳本,以及getValues();,用於取得該複製的名稱和URL。模板複製成功創建,但文件名和URL未在客戶端檢索。

P粉141911244
P粉141911244

全部回覆(2)
P粉147045274

試試這個:

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

這是一個獲取文件資訊的範例。

如下截圖所示,當我點擊按鈕時,檔案名稱和URL將顯示在輸入框中。

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>
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板