google.script.run возвращает неопределенный массив - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь вернуть массив из серверной функции getPrepList ().При доступе со стороны клиента «prepList []» возвращает «неопределенное».Это всего лишь фрагмент полного файла code.gs.

// //

function getPrepList(){
   var sheet = SpreadsheetApp.getActiveSpreadsheet();
   var doPrepRange = sheet.getRange('F:F');
   var itemNameRange = sheet.getRange('A:A');
   var prepList = new Array();

    for(var i = 1; i < getFirstEmptyRow(); i++){
      if(doPrepRange.getCell(i,1).getValue() == true){
        prepList.push(itemNameRange.getCell(i, 1).getValue());
      };
    };
    Logger.log(prepList);
   return(prepList);
 };


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

// //

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1><div align="center">PREP LIST MAKER v 2.0</h1></div>

    <button align="center" onClick="createCountSheet()">Nightly Count Sheet</button><br />
    <button align="center" onClick="showPrepList()">Get Prep List</button><br />

    <script>

    console.info("before execution");
    function createCountSheet(){
      google.script.run
        .generateCountSheet();
     };

     google.script.run 
       .withSuccessHandler(showPrepList)
       .getPrepList();

    function showPrepList(prepList){
      console.log(prepList);
    };

     </script>
  </body>
</html>

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Если вы звоните showPrepList(prepList) с кнопки,

<button align="center" onClick="showPrepList()">Get Prep List</button><br />

prepList будет undefined, потому что вы не передаете аргумент как prepList.

Попробуйте,

<button align="center" onClick="showPrepListFromSheet()">Get Prep List</button><br />

<script>

console.info("before execution");
 function showPrepListFromSheet(){
 google.script.run 
   .withSuccessHandler(showPrepList)
   .getPrepList();
function showPrepList(prepList){
  console.log(prepList);
};
}</script>

Читать:

0 голосов
/ 28 ноября 2018

Попробуй так:

function getPrepList(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();;
  var rg=sh.getDataRange();
  var vals=rg.getValues();
  var prepList=[];
  for(var i=1;i<vals.length;i++){
    if(vals[i][5]){
      prepList.push(vals[i][0]);
    }
  }
  return prepList;
}

Мне не понятно, какой лист ты хотел, поэтому я выбрал активный.Я предполагал, что у вас есть строка заголовка, поэтому я начал цикл с единицы вместо нуля.Кстати, я не проверял это, так что, возможно, вам придется немного его настроить.

...