2016-09-23 230 views
0

我想從HTML文件中調用Google工作表。 這是一個通過文件(https://developers.google.com/apps-script/guides/html/templates)可以通過:將Google Apps腳本實施爲HTML

<body> 
    <? var data = SpreadsheetApp 
     .openById('1234567890abcdefghijklmnopqrstuvwxyz') 
     .getActiveSheet() 
     .getDataRange() 
     .getValues(); ?> </body> 

中真正起作用的,當我加載HTML文件中捕獲的值。 我需要做的是 - 我想在一個for-loop中的Spreadsheet中設置值,該值由一個按鈕激活。

function processForm() { 

var elementsNr = document.getElementsByName("nummerierung") 
var elements = document.getElementsByName("schuelername") 
var elementsDate = document.getElementsByName("datuminput") 
var elementsArt = document.getElementsByName("art") 
var elementsZeit = document.getElementsByName("zeit") 

for (var i = 0; i < elements.length; i++) { 
    var Nr = elementsNr[i].value; 
    var sname = elements[i].value; 
    var datum = elementsDate[i].value; 
    var Uart = elementsArt[i].value; 
    var UZeit = elementsZeit[i].value; 

    var data = SpreadsheetApp 
        .openById('1MWy0J5ZKnsXXKWEX72Bh9cRBvsFkDAqTEhW1SxFavmA') 
        .getActiveSheet() 
        .getDataRange(sheet.getLastRow()+1, 1, 1, 5) 
        .getValues([[Nr, datum, sname, Uart, UZeit]]); 
} 

但不知何故,我得到一個參考錯誤:

ReferenceError: SpreadsheetApp is not defined

:(

任何

回答

1

所提到的文件是在問題沒有按所示的模板化有關,但HTML代碼」? t使用模板化HTML語法,另一方面,Best Practices doc建議異步加載數據。

要呼叫服務器端從客戶端JavaScript(上的HTML文件中的腳本)應用腳本功能,首先創建對.GS文件的功能,然後通過使用google.script.run

對於從HTML調用它代碼示例見answer通過DanielSpreadsheetApp.getActiveSpreadsheet() is breaking script

順便說一句,getDataRangegetValues不應該有論據。

+0

謝謝ruben - 我之前嘗試過,但由於函數運行不同步,所以我遇到了很大的問題。 :/ 在文檔中,它看起來像這種方式也應該工作,它會立即解決我所有的問題。 – dirtybob

+0

我做了第二次更新 –

+0

再次感謝魯本! 你是否以我嘗試過的方式看到了一種方式,即使這不是最好的做法 - ? 我很絕望。我現在嘗試了不同的方法: 1.試圖從functionINDEXHTML中給函數一個單獨的值 - 但由於速度不同,一些數據會丟失。 2.試圖從functionINDEXHTML到functionCODEGS - >不起作用的數組:http://stackoverflow.com/questions/39637258/give-values-of-an-array-to-another-function-js(錯誤:由於屬性中的非法值失敗:0) 3.試圖在functionA中實現functionB(此線程) :'( – dirtybob