google.script.run выполняется, но возвращает null, в то время как функция code.gs имеет значения / log для возврата - PullRequest
0 голосов
/ 05 июля 2019

Noob здесь, я был с этой проблемой на прошлой неделе, и я не могу понять, почему javascript не будет видеть возвращаемые значения из code.gs, так как у меня тот же код, но другая функция работает, как ожидалось.

Есть ли причина, по которой функция code.gs ниже значений журнала в Logger.log означает, что у нее есть данные для возврата, но javascript не получит никаких значений и выдаст мне 'null' в предупреждении?

Code.gs

function getInvoicesForID(studentAltID) {
  var invoicesForID = [];
  //get general invoices sheet and values
  var sInvoices = ss.getSheetByName("Invoices");
  var dataInvoices = sInvoices.getDataRange().getValues();
  //get balance info for id
  for(var i = 0; i < dataInvoices.length; i++){
    if(dataInvoices[i][4]==studentAltID){
      invoicesForID.push([dataInvoices[i][0],dataInvoices[i][1],dataInvoices[i][2],dataInvoices[i][3]]);
      break;
    }
  }
  Logger.log("invoicesForID = " + invoicesForID);
  return invoicesForID;
}

javascript.html

  document.getElementById("btnsearchInvPayBalforStudentID").addEventListener("click",searchInvPayBalforStudentID);

//function to look for Payments, Invoices and Balance 

function searchInvPayBalforStudentID()
{
    try{
    //get the id 
      var stID = document.getElementById("txtStudentID").value;

          google.script.run.withSuccessHandler(getInvoices)
                           .getInvoicesForID(stID);
    }catch(e){
      alert(e);
    }
}
function getInvoices(stIDInvData) {
    try{
      alert(stIDInvData);
    }catch(e){
      alert(e);
    }
}

, когда код выполняется, и я проверяю журналы. Я вижу данные из моей функции GS, которые выглядят так,это данные для ожидаемых данных для передаваемого studentAltID

[19-07-04 22: 12: 13: 491 EDT] invoicesForID = Чт 31 января 2019 00:00:00 GMT-0500 (EST), 34073, Matricula 2019,298854

что мне не хватает?

спасибо заранее:)

ОБНОВЛЕНИЕ:

Я включил обработчик событий (при нажатии кнопки), я проверил синтаксические ошибки и ошибки в скобках, но не смог найтипроблема

Вот ссылка на проект, который содержит еще несколько элементов, которые я убрал в своем посте, надеюсь, это может помочь

https://script.google.com/d/1R2xgAOWslHWzsCCeEFCfilo0cSHNKmsDHw26YH-KTQ9JrpbYZnnVZ2mL/edit?usp=sharing

Спасибо

1 Ответ

0 голосов
/ 06 июля 2019

(... сквозь луч света, и ангелы поют Аллеллуию в хоре на заднем плане ...)

Я нашел ответ здесь: Невозможно вернуть массив [скрипт Google Apps] из @ VishnarTadeleratha

как выяснилось, я не могу передать даты в массиве, который является точно одним из возвращаемых элементов в моем массиве: google говорит: "Параметры: ... Запросы не выполняются, если выпопытка передать элемент Date, Function, DOM, кроме формы или другого запрещенного типа, включая запрещенные типы внутри объектов или массивов .... source: https://developers.google.com/apps-script/guides/html/reference/run

после удаления этого элемента из массива возврата, javascript получил значения, отличные от нуля .. ура.

Если мне все еще нужно передать дату в моем массиве, что я и делаю, @VishnarTadeleratha также предложил преобразовать эту переменную в строку и вуаля .. мой длинныйпроблема за неделю решена ... наконец-то я могу двигаться дальше ... Ура

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...