我有两个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选择单击或选择,然后必须在我为此标记的红色外框中显示。 图片
的失败结果