Динамический список параметров в функции HTML в скрипте Google Apps - невозможно получить элементы для загрузки в HTML - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь сгенерировать список опций для выпадающего меню в функции, запускаемой из боковой панели. Я хочу, чтобы список был динамичным. У меня есть список в листе «данных» в электронной таблице, и я могу запустить скрипт вне HTML-кода, который просто отлично извлекает нужные мне данные, но я не могу понять, как загрузить это в список опций. Я работал над этим часами сегодня, и теперь я НАСТОЯЩИЙ СМЕТЬ. Я даже не уверен, имеют ли смысл сценарии, которые я здесь показываю, потому что я попробовал так много разных подходов, чтобы заставить это работать.

Code.gs:

function createNewInv() {
   // var values = getColValues('DataVal',1);
//    var listValues = getListValues(values);
  //  Logger.log(values);
  
    ss = SpreadsheetApp.getActiveSpreadsheet();
  var html = HtmlService.createHtmlOutputFromFile('Invoice Form.html')
 // html.status = status;
//  var evhtml = html.evaluate();
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setHeight(450)
  .setWidth(300)
  .setTitle('Enter a New Invoice')
  ss.show(html);

function getColValues(sheet, col) {
    var sheet = ss.getSheetByName(sheet);
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
    //var col = headers.indexOf(header) + 1;
    var col = col;
    try {
        var values = sheet.getRange(2, col, sheet.getLastRow() - 1, 1).getValues();
        var valueArray = [];
        for (var i = 0; i < values.length; i++) {
            if (values[i][0] != "") {
                valueArray.push(values[i][0]);
            }
        }
        return valueArray;
    }
    catch (err) {
        return ["no data in column:" + header];
    }
}

<!DOCTYPE html>
<html>
<div>
<b>Add Invoice: </b><br />
<form autocomplete="on" >
Status: <br />    
    <select id='status' name='status'>
    <option>...</option>
    
    </select>
    <br />
    
        </form>
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
// The code in this function runs when the page is loaded.
$(function() {
  google.script.run.withSuccessHandler(showThings)
      .getColValues('DataVal',1);
        Logger.log(values);
});

function showThings(things) {
  google.script.run.withSuccessHandler(function(getColValues('DataVal',1))){
  var list = $('#status');
  list.empty();
  
  for (var i = 0; i < things.length; i++) {
    list.append(new Option(things[i],things[i]));
  }
 
  return list;
}
}

</script>

Может кто-нибудь помочь мне разобраться в этом беспорядке, который я сделал ??

...