簡體   English   中英

使用Google Apps腳本作為服務從電子表格中檢索數據

[英]Using Google Apps Script as service to retrieve data from spreadsheet

我是這項技術的新手,已經進行了很長時間的研究,但取得的成功有限。 (那里有很多說明和教程,但是其中很多已經過時了,不再相關或無法使用。)我想做的是創建一個GAS,將數據作為對象從Google工作表傳遞到javascript請求。 我有幾個限制-JS駐留在內部唯一的內部網上,我的Chrome(v58.0)設置限制XMLHttpRequest(在我的IE10版本中完美運行),我無法訪問Chrome中的開發者控制台(我可以在IE中),我不能使用JQuery或任何其他插件。 GAS方面的所有功能似乎都可以正常運行並提供應有的功能,但是JS似乎是問題所在。

當我直接訪問頁面時(通過doGet()產生的結果,將交付該對象的文本結果。所有數據都應以純文本形式顯示,應有的顯示)。

這是我的GAS(以我的身份執行,匿名):

function doGet() {
var oReturnLinks = [];
var sLinks = SpreadsheetApp.openById("secret").getSheetByName("links");
var oLinks = sLinks.getSheetValues(2, 1, -1, -1);

//loop over data and determine what to return
for (a=0;a<oLinks.length;a++) {
    if (oLinks[a][0] == true && oLinks[a][1].trim() != '' && oLinks[a][2].trim() != '' && oLinks[a][3].trim() != '' && oLinks[a][4].trim() != '' ) {

        oReturnLinks.push(oLinks[a]);

    }

}

if (oReturnLinks.length > 0) {

    return ContentService.createTextOutput(JSON.stringify(oReturnLinks)).setMimeType(ContentService.MimeType.JAVASCRIPT);

} else {

    return ContentService.createTextOutput(JSON.stringify("no data returned")).setMimeType(ContentService.MimeType.JAVASCRIPT);

}

}

然后在我的Intranet上的JS中(這在IE10中有效):

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://script.google.com/macros/s/secret/exec", false);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send();
var response = JSON.parse(xhttp.responseText);

我也嘗試過這個:

var s
s = document.createElement("script");
s.src = "https://script.google.com/macros/s/secret/exec";
var oResult = JSON.stringify(s);
alert(oResult);

...但是會產生

{}

作為結果。

如果我將其添加到輸出內容中:

'(' + JSON.stringify(oReturnLinks) + ')'

我得到這個:

[Object HTMLScriptElement]

...作為輸出。

如果我將GAS中的mimetype更改為JSON,則會在IE中收到SEC7112錯誤(由於mime類型不匹配而被阻止),並且在Chrome中出現了一些我看不到的錯誤。

必須有一個跨瀏覽器解決方案嗎? 我覺得這很簡單,我很想念。

您正在將MIME類型設置為JAVASCRIPT而不是JSON。

return ContentService.createTextOutput(JSON.stringify(oReturnLinks))
  .setMimeType(ContentService.MimeType.JSON);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM