如何将不同大小的数组加载到html(谷歌电子表格脚本)

时间:2015-03-05 16:44:17

标签: javascript google-apps-script google-sheets

我是一个新手并且弄清楚谷歌电子表格脚本的可能性。我尝试读出我的spreadsheat的列标题,并将其加载到谷歌脚本的html端。我能够读出一个完整的阵列,但我无法弄清楚如何读出一个表的每个单一范围(例如B1,​​C1,D1,......)。我的下一个问题是,我事先并不知道我必须在html中添加的列数。

谁能帮帮我?

------ code.gs -------

function doGet() {
  return HtmlService.createHtmlOutputFromFile('ProbeGUI')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);

  //return HtmlService.createHtmlOutput('<b>Hello, world!</b>');

}


function WriteToSpreadsheet(input) {

  var ss = SpreadsheetApp.openById("1PkakB0cZKtzSxJUFULZjJBEPb-7U6XOASI69yOopWRM"); //Der Sheetname lautet ProbeCode
  var sheet = ss.getSheetByName("Datenpool");
  var firstEmptyRow = sheet.getLastRow() + 1;
  var range = sheet.getRange("B"+(firstEmptyRow)); //In " " steht, in welche Spalte geschrieben wird

  range.setValue(input);
}


function WriteToFormular() {

  var ss = SpreadsheetApp.openById("1PkakB0cZKtzSxJUFULZjJBEPb-7U6XOASI69yOopWRM");
  var sheet = ss.getSheetByName("Datenpool");
  var LastColumn = sheet.getLastColumn();
//  var range = sheet.getDataRange();
  var range = sheet.getRange(1, 2, 1, LastColumn);
  var values = range.getValues();

//  return values[0][ColumnCount];    
//  Browser.msgBox(values);
  return values;
}

---- html代码----

 <script language="JavaScript" type="text/javascript">
        function SendData() {
           google.script.run.WriteToSpreadsheet(document.Formular.IdeenWert.value);
        }

        function ReadSpreadsheet() {
             alert("ReadSpreadsheet");
//           google.script.run.withSuccessHandler(add_Item_row).WriteToFormular();
           google.script.run.withSuccessHandler(ChooseItem).WriteToFormular();
        }

        function add_Item_row(ItemNamen) {
           var parent = document.getElementById('newDiv');
           var child = document.createElement('p');
//           var NewItem = ItemNamen[0][1];

           child.innerHTML = ItemNamen;
           parent.appendChild(child);
}


        function ChooseItem(SpreadsheetSpaltenNamen){
             alert(SpreadsheetSpaltenNamen);
var i = 0;
             alert(i);
             while (SpreadsheetSpaltenNamen[0][i] != "") {
                function add_Item_row(SpreadsheetSpaltenNamen[0][i])
                i++;
             }
          }




function validate_num(formdata) {
  formdata.value=formdata.value.replace(/\D/, '' );
}


    </script>

<body onload="ReadSpreadsheet();">
    <form name="Formular" action="" >
       <div style="position:relative; width:100px; top:20px; " >Restbetrag:</div><div style="position:relative; left:100px; width:100px; height:30px;" id="RestGeld">100</div>

       <div style="float:left; width:100px;" id="Item">Item</div><div><input id="WerteID" name="IdeenWert" type="text" size="7" onkeyup="validate_num(this)" onblur="formSubmit(this.value)" /></div>
       <div style="clear:both"></div> 


       <div style="position:relative; top:20px; left:100px; " ><input onclick="SendData();" type="button" value="OK" /></div> <!-- google.script.host.close() -->
   </form>


<div id='vendordiv'>
      <p>
      <input type="Button" value="Spreadsheet auslesen"     onclick="ReadSpreadsheet()"/>
      </p>
    </div>

    <div id ='newDiv'>

    </div>
</body>

1 个答案:

答案 0 :(得分:0)

我尝试了你的代码并在客户端遇到了一些错误。所以我做了一个改变只是为了测试按钮“Spreadsheet auslesen”

onclick="google.script.run.withSuccessHandler(ChooseItem).WriteToFormular();"

我无法找到为什么以你正在进行的方式拨打电话的原因不起作用,我会在找到答案后更新答案。

同样在while循环中的“ChooseItem”函数中,你有“function”,删除它就可以调用函数而不是尝试创建一个新函数。

在那些修改之后,我能够在html中插入标题。 希望它有所帮助。