如何将参数从一个Google-Apps-Script传递到另一个并执行?

 手机用户2502896641 发布于 2023-01-29 22:07

我相信你的问题是由于你试图将一个uiapp元素作为响应参数传递.这里有一些html服务脚本的变化.
该演示
脚本:

// #### Part A
function doGet(e) {
  var html =""; // a text to be passed to script B
  html+="
"; // a place to display script B answer html+=""; // function to show the result of the urlfetch (response of script B) return HtmlService.createHtmlOutput(html); } function myClickHandler(text) { var url = ScriptApp.getService().getUrl(); var payload = { name : "Gene", text : text, time : new Date() }; var params = { method : "post", payload : payload } Logger.log("text: "+text); var HTTPResponse; try{ HTTPResponse = UrlFetchApp.fetch(url, params); }catch(e){ Logger.log(e); } return HTTPResponse.getContentText(); } // ###### Part B function doPost(e){ if(typeof e === 'undefined'){ return "e was empty!!"; } var htmlOut="
    "; for(var i in e.parameter){ htmlOut+="
  • "+i+ " : " + e.parameter[i]+"
  • "; if(i=="text"){ htmlOut+="
  • Text hash : "+Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, e.parameter[i]))+"
  • "; } } htmlOut+="
"; return ContentService.createTextOutput(htmlOut); }

你是不是谁触发脚本B.之一,这是一个脚本这是触发脚本 - 需要注意的是,你将不必拿到剧本B的记录事件的能力(因为它被触发时,你是不是有很重要B和脚本A在制作urlfetch时未被识别为"你".如果要获取脚本b logger的结果,则应将其返回到脚本a.重要的是要注意:再次,当脚本A对脚本B执行UrlFetch时,它不会被识别为"您",因此脚本B必须接受任何人打开(在"谁有权访问应用程序"下的发布选项中)你需要选择任何人甚至匿名).

注意:我把所有东西放在同一个脚本中用于商品(你可以将它分成两个不同的脚本,这不是问题),因为B部分需要访问匿名人员,我无法自动检索A部分中的电子邮件地址所以我改变了一点在这里做了什么.

1 个回答
  • 我相信你的问题是由于你试图将一个uiapp元素作为响应参数传递.这里有一些html服务脚本的变化.
    该演示
    脚本:

    // #### Part A
    function doGet(e) {
      var html ="<input type='text' id='text' /><input type='button' onclick='myClick()' value='submit'>"; // a text to be passed to script B
      html+="<div id='output'></div>"; // a place to display script B answer
      html+="<script>";
      html+="function myClick(){google.script.run.withSuccessHandler(showResults).myClickHandler(document.getElementById('text').value);}"; // handler to do the job in script A
      html+="function showResults(result){document.getElementById('output').innerHTML = result;}</script>"; // function to show the result of the urlfetch (response of script B)
      return HtmlService.createHtmlOutput(html);
    }
    
    
    function myClickHandler(text) {  
      var url = ScriptApp.getService().getUrl();
      var payload = { 
        name : "Gene",
        text : text,
        time : new Date()
      };
    
      var params = { 
        method : "post",
        payload : payload
      }
      Logger.log("text: "+text);
    
      var HTTPResponse;
    
      try{
        HTTPResponse = UrlFetchApp.fetch(url, params);
      }catch(e){
        Logger.log(e);
      }
      return HTTPResponse.getContentText();
    }
    
    // ###### Part B
    function doPost(e){
      if(typeof e === 'undefined'){
        return "e was empty!!"; 
      }
      var htmlOut="<ul>"; 
      for(var i in e.parameter){
        htmlOut+="<li>"+i+ " : " + e.parameter[i]+"</li>";
        if(i=="text"){
          htmlOut+="<li> Text hash : "+Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, e.parameter[i]))+"</li>";
        }
      }
      htmlOut+="</ul>";
      return ContentService.createTextOutput(htmlOut);
    }
    

    你是不是谁触发脚本B.之一,这是一个脚本这是触发脚本 - 需要注意的是,你将不必拿到剧本B的记录事件的能力(因为它被触发时,你是不是有很重要B和脚本A在制作urlfetch时未被识别为"你".如果要获取脚本b logger的结果,则应将其返回到脚本a.重要的是要注意:再次,当脚本A对脚本B执行UrlFetch时,它不会被识别为"您",因此脚本B必须接受任何人打开(在"谁有权访问应用程序"下的发布选项中)你需要选择任何人甚至匿名).

    注意:我把所有东西放在同一个脚本中用于商品(你可以将它分成两个不同的脚本,这不是问题),因为B部分需要访问匿名人员,我无法自动检索A部分中的电子邮件地址所以我改变了一点在这里做了什么.

    2023-01-29 22:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有