我之前在这里问过类似的问题,但我没有找到帮助我的答案。对不起!我可能只是缺乏经验来理解这些答案,所以请耐心等待。
我编写了一个Google Apps脚本,用于扫描特定的电子表格(不是由我创作,但我可以查看)并计算某些字段。 doGet(e)函数返回计数,因此当我运行publish-as-web-app时,我看到一个数字。
现在我的chrome.js在我的chrome扩展程序中做了类似的事情:
var my_app = "https://script.google.com/a/macros/google.com/s/.../exec?param=value";
var xhr = new XMLHttpRequest();
try {
xhr.open("GET", my_app);
xhr.send(null);
var result = xhr.getAllResponseHeaders();
localStorage.count = result;
chrome.browserAction.setBadgeText({text: localStorage.count});
} catch(e)
...
}
这非常粗糙,因为我对JavaScript和Chrome扩展程序等都很陌生。
我猜getAllResponseHeaders()不是我在调用my_app时显示的结果数字,所以我应该使用什么呢?在XMLHttpRequest的API参考中,我找不到任何明显的东西。
我很确定我的代码有很多错误,但让我们一步一步。
提前谢谢!详细的答案会很棒,所以我可以关注它们并扩展我目前非常有限的知识。
答案 0 :(得分:0)
如果您正在从客户端JavaScript到Apps脚本发出HTTP请求,那么您可以使用以下内容:
function requestToAppsScript() {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
//console.log('xmlhttp.readyState: ' + xmlhttp.readyState);
if (xmlhttp.readyState===4 && xmlhttp.status===200) {
//console.log('xmlhttp.responseText: ' + xmlhttp.responseText);
var theReturnData = xmlhttp.responseText;
//console.log('return value: ' + theReturnData);
};
};
xmlhttp.open("GET","URL here",true);
xmlhttp.send();
};
答案 1 :(得分:0)
基本上我只是没有解析输出。我收到的输出包含了很多东西,而我正在寻找的数字隐藏在一串字符串中,总是在一些名为" cajaHtml"的字符串后面。
因此现在呼叫:
xhr.open("GET", my_app);
xhr.onreadystatechange = handleResponse;
xhr.responseType = "text";
xhr.send(null);
与
function handleResponse() {
if (xhr.readyState == 4) {
var result = xhr.responseText.split("cajaHtml")[1];
}
}
谢谢!