Javascript 如何通过一个文本框中的输入从同一行的另一列获取值

Javascript 如何通过一个文本框中的输入从同一行的另一列获取值,javascript,google-apps-script,google-sheets,web-applications,client-server,Javascript,Google Apps Script,Google Sheets,Web Applications,Client Server,我有一个带有两个文本框的html文件 1.订单 1.金额 当我在“订单”文本框中键入一个数字时,我需要它 我将从Google工作表中与此顺序匹配的同一行的另一列中获取值 这是我的代码。gs代码不起作用 function doGet(e) { return HtmlService.createHtmlOutputFromFile('page'); } function getCost(oneCode){ var url = "https://docs.g

我有一个带有两个文本框的html文件 1.订单 1.金额 当我在“订单”文本框中键入一个数字时,我需要它 我将从Google工作表中与此顺序匹配的同一行的另一列中获取值

这是我的代码。gs代码不起作用

    function doGet(e) {
  
 return HtmlService.createHtmlOutputFromFile('page');
}




function getCost(oneCode){
  
  var url = "https://docs.google.com/spreadsheets/d/1333t7lvECnmOcCnTE6gnn_RN1wrPckWpIETiPUjkUnU/edit#gid=0";
  var ss = SpreadsheetApp.openUrl(url);
  var ws = ss.getSheetByName("Sheet1");
  var data = ws.getRange(1,1,ws.getLastRow(),2).getValues();
  
  var ordersList = data.map(function(r){ return r[0]; });
  var amountList = data.map(function(r){ return r[1]; });
  
  
  var position = ordersLis.indexOf(oneCode);
  if(position > -1){
    return amountList[position];
 
  } else {
    return "not found";
    
  }
  
}  
======================== 这是html代码

    <!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <script>
  document.getElementById("one").addEventlistener("input",doThis);
  
  function doThis(){
  
  var oneCode = document.getElementById("one").value;
  
  
  
  google.script.run.withSuccessHandler(updateAmount).getCost(oneCode);
  
  }
  
  function updateAmount(cost){
  
  document.getElementById("two").value = cost;
  
  }
  
  </script>
  <body>
  <div>
    <input id="one" type="text">
    <label for="one">orders</label>
    </div>
    <div>
    <input disabled id="two" type="text">
    <label for="two">amount</label>
    </div>
    
    
  </body>
</html>

document.getElementById(“一”).addEventlistener(“输入”,doThis);
函数doThis(){
var oneCode=document.getElementById(“一”)值;
google.script.run.withSuccessHandler(updateAmount).getCost(oneCode);
}
函数更新计数(成本){
document.getElementById(“两个”)。值=成本;
}
命令
数量

我想提出以下修改

修改点:
  • 在HTML和Javascript方面

    • addEventlistener
      addEventlistener

        document.addEventListener("DOMContentLoaded", function(){
          document.getElementById("one").addEventListener("input",doThis);
        });
      
    • 使用脚本时,请修改
      document.getElementById(“一”).addEventListener(“输入”,doThis)如下所示。因为当未使用
      document.addEventListener(“DOMContentLoaded”,function)
      时,在
      addEventListener
      处会发生错误

        document.addEventListener("DOMContentLoaded", function(){
          document.getElementById("one").addEventListener("input",doThis);
        });
      
    • input
      用作事件类型时,当输入的文本为
      130
      时,发送
      1
      13
      130
      。这样,
      google.script.run.withSuccessHandler(updateAmount).getCost(oneCode)
      将运行3次。所以我认为
      change
      可能适合这种情况

  • 在谷歌应用程序脚本端

    • var ss=SpreadsheetApp.openUrl(url)
      openUrl
      openByUrl
    • 我认为在您的脚本中,
      var position=ordersLis.indexOf(oneCode)
      var position=ordersList.indexOf(oneCode)
    • 在脚本中,
      getCost(oneCode)
      oneCode
      是字符串类型
当上述各点反映到脚本中时,它将变成如下所示

修改脚本: HTML和Javascript端: 用法:
  • 从您的脚本来看,您似乎正在使用Web应用程序使用此脚本时,请将上述脚本复制并粘贴到脚本编辑器中,并将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
  • 打开Web应用时,请在输入框中输入值,然后按enter键或从输入框中移除焦点。通过此操作,
    addEventListener(“change”,doThis)
    被执行,并且
    doThis
    被运行
参考资料:

    • 我想提出以下修改

      修改点:
      • 在HTML和Javascript方面

        • addEventlistener
          addEventlistener

            document.addEventListener("DOMContentLoaded", function(){
              document.getElementById("one").addEventListener("input",doThis);
            });
          
        • 使用脚本时,请修改
          document.getElementById(“一”).addEventListener(“输入”,doThis)如下所示。因为当未使用
          document.addEventListener(“DOMContentLoaded”,function)
          时,在
          addEventListener
          处会发生错误

            document.addEventListener("DOMContentLoaded", function(){
              document.getElementById("one").addEventListener("input",doThis);
            });
          
        • input
          用作事件类型时,当输入的文本为
          130
          时,发送
          1
          13
          130
          。这样,
          google.script.run.withSuccessHandler(updateAmount).getCost(oneCode)
          将运行3次。所以我认为
          change
          可能适合这种情况

      • 在谷歌应用程序脚本端

        • var ss=SpreadsheetApp.openUrl(url)
          openUrl
          openByUrl
        • 我认为在您的脚本中,
          var position=ordersLis.indexOf(oneCode)
          var position=ordersList.indexOf(oneCode)
        • 在脚本中,
          getCost(oneCode)
          oneCode
          是字符串类型
      当上述各点反映到脚本中时,它将变成如下所示

      修改脚本: HTML和Javascript端: 用法:
      • 从您的脚本来看,您似乎正在使用Web应用程序使用此脚本时,请将上述脚本复制并粘贴到脚本编辑器中,并将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
      • 打开Web应用时,请在输入框中输入值,然后按enter键或从输入框中移除焦点。通过此操作,
        addEventListener(“change”,doThis)
        被执行,并且
        doThis
        被运行
      参考资料: