如何使用onclick = google.script.run.taxBill(this.value)在循环的Htmlservice表中获取列值?

我有两个Google Apps脚本脚本,它们两个都可以通过相互连接来完成某些工作。第一个脚本 selectCheckBillName 显示带有循环表的Htmlservice的Popup,并在选择了列表名称之后调用了另一个函数。它是“ taxBill this.value ”。脚本“ taxBill”是第二个作为main所有脚本的句柄的功能,用于处理main所有脚本的功能,目的是在选择其名称后显示数据结果,并且必须按原样显示,这是 selectCheckBillName 的代码:

function selectCheckBillName() {
  var s = Spreadsheetapp;
  var ss = s.getactiveSpreadsheet();
  var val = ss.getRange("B:B").getvalues();
  var result = "<head><script type='text/javascript'>function highlight(e) {var table = e.parentNode.parentNode,trs = table.getElementsByTagName('tr'); for (var i = 0; i < trs.length; i++) {trs[i].style.backgroundColor = null; trs[i].style.color = null; } e.style.backgroundColor = '#e68a00'; e.style.color = 'white';}</script><style type='text/css'>.gridview {display:inline-block; border-collapse:collapse; margin:0px 4px 4px 0; box-shadow:3px 3px 4px #bbb;} .gridview,.gridview td,.gridview th {margin:0; border:1px solid #cccccc; width:200px;} .gridview th {font-size:1.1em; height:25px; text-align:center; font-weight:normal; color:#F9F9F9; background:#337EB5;} .gridview tr {background:#F4F9FD;} .gridview tr:nth-child(odd) {background-color:#ffffcc;} .gridview tr:nth-child(even) {background-color:#ffffe6;} .gridview td {font-weight:normal; text-align:left; vertical-align:top; padding:4px 9px 5px 9px;} .gridview tfoot td {background-color:#EEEEEE;} .gridview tfoot td .page {color:#000000; font-weight:bold;} .gridview tr.subfoot,.gridview tr.subfoot td {background-color:#FFFFEC;} .gridview tr:hover td,.gridview tbody tr:hover td {background-color:#ffc266; cursor:pointer; color:white;}}</style></head><table border=1 class='gridview'>";
    for (var i=1,iLen=val.length; i<iLen; i++) {
        result += "<tr OnClick=highlight(this)>";
          result += "<td OnClick=google.script.run.taxBill(this.value) value="+val[i]+">"+val[i]+"</td>";
      result += "</tr>";
    }
    result += "</table>";

  ss.show(HtmlService.createHtmlOutput(result)
    .setSandboxMode(HtmlService.SandboxMode.IFRAME)
    .setTitle("T a x    R e k e n i n g")
    .setHeight(500)
    .setWidth(235));
}

这是 taxBill 功能:

function taxBill(val) {
  var s = Spreadsheetapp;
  var destSheet = s.getactiveSpreadsheet();
  var vals = destSheet.getRange(1,2,destSheet.getLastRow()).getvalues();
    for (var i = vals.length-1; i > 0; i--)
      if (vals[i][0] == val) break;
      var TotalSmw = destSheet.getRange(i+1,16).getvalue();
      var TotalLstk = destSheet.getRange(i+1,14).getvalue();
      var HargaLstk = destSheet.getRange(i+1,13).getvalue();
      var pmkaianLstk = destSheet.getRange(i+1,12).getvalue();
      var MtrnAwalLstk = destSheet.getRange(i+1,11).getvalue();
      var MtrnAkhrLstk = destSheet.getRange(i+1,10).getvalue();
      var TotalAir = destSheet.getRange(i+1,8).getvalue();
      var HargaAir = destSheet.getRange(i+1,7).getvalue();
      var pmkaianAir = destSheet.getRange(i+1,6).getvalue();
      var MtrnAwalAir = destSheet.getRange(i+1,5).getvalue();
      var MtrnAkhrAir = destSheet.getRange(i+1,4).getvalue();
      var admin = destSheet.getRange(i+1,46).getvalue();
      var client = destSheet.getRange(i+1,18).getvalue();
      var checkInDate = destSheet.getRange(i+1,17).getvalue();
      var checkUpDate = destSheet.getRange(i+1,3).getvalue();
      var subject = "Perincian Data & Informasi";
      var unitRp = "Rp.    ";
      var unitKw = "  kwh";
      var unitM = "  m³";
      var NB = "INFORMASI   REKENING   TERAKHIR    ATAS    NAMA        " + val + "         ❗❗❗";
  var message = "<body>THIS IS JUST WAS THE TEST CONTENT</body>";

  destSheet.show(HtmlService.createHtmlOutput(message)
    .setSandboxMode(HtmlService.SandboxMode.IFRAME)
    .setTitle(NB)
    .setHeight(290)
    .setWidth(765));
}

问题是:不会在脚本中调用第三方代码中的onclick = google.script.run.taxBill(this。 value )的值taxBill(this.value)的值始终显示为“ 未定义”,它应该是前面在selectCheckBillName的第一个脚本中选择的匹配名称。我试图通过另一种替代行来更改“ this.value”行,例如 “ this.taxt()”,“ this.textContent”,“ this.data”,“ this.innerText” 似乎根本没有帮助。请有人应该可以帮助我。任何成就将不胜感激。谢谢您抽出宝贵的时间为我的英语不好对这些致歉。

我添加了一张图片来描述图片的更多注意事项,“当Ellen选择单击或选择,然后必须在我为此标记的红色外框中显示。 图片

如何使用onclick = google.script.run.taxBill(this.value)在循环的Htmlservice表中获取列值?

的失败结果
fangtanyi 回答:如何使用onclick = google.script.run.taxBill(this.value)在循环的Htmlservice表中获取列值?

非输入元素中没有value属性。

由于您已经为元素设置了内部值,因此可以将代码更改为:

result += "<td OnClick=google.script.run.taxBill(this.innerText)>"+val[i]+"</td>";

它将起作用。

本文链接:https://www.f2er.com/3120663.html

大家都在问