Как получить значение столбца в таблице Htmlservice цикла с помощью onclick = google.script.run.taxBill (this.value)? - PullRequest
1 голос
/ 12 ноября 2019

У меня есть два сценария сценария приложений Google, которые оба могут выполнять некоторые функции, связанные друг с другом. Первый сценарий selectCheckBillName показывает всплывающее окно с Htmlservice таблицы цикла и вызывает другую функцию после того, как она выбрала имя списка в нем. Это " taxBill ( this.value ) ". Скрипт, который является «taxBill», является второй функцией как дескриптор main all скрипта для обработки функции main all цели скрипта, где он показывает результат данных после выбора их имени, и он должен быть показан, как должно быть,Вот код 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 ) в стороннем коде не будут вызываться в скриптеof taxBill (this.value) всегда показывал « undefined », это должно быть имя совпадения, выбранное ранее в первом скрипте selectCheckBillName. Я пытался с помощью других альтернативных строк изменить строку «this.value» следующим образом «this.taxt ()», «this.textContent», «this.data», «this.innerText» похоже, что ничего не помогает. Пожалуйста, кто-то должен помочь мне. Любые достижения оценят. Спасибо за то, что уделили мне время и извинитесь за мой плохой английский.

Я добавил фотографии, чтобы описать больше уведомлений для фотографии ", когда Эллен решила нажать или выбрать, а затем ее нужно показать. в красных пакетах, которые я отмечаю за это. Это неудавшийся результат ПОС

...