【问题标题】:Calling Google Apps Script from a Chrome Extension从 Chrome 扩展程序调用 Google Apps 脚本
【发布时间】:2015-05-19 19:17:28
【问题描述】:

我知道以前在这里有人问过类似的问题,但我没有找到对我有帮助的答案。对不起!我可能只是太缺乏经验,无法理解这些答案,所以请多多包涵。

我编写了一个 Google Apps 脚本,它可以扫描特定的电子表格(不是我编写的,但我可以查看)并对某些字段进行计数。 doGet(e) 函数返回计数,所以当我运行发布为网络的应用程序时,我会看到一个数字。

现在从我的 chrome 扩展中的 background.js 我做了这样的事情:

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 参考中,我没有发现任何明显的东西。

我很确定我的代码还有很多问题,但让我们一步一步来。

提前致谢!详细的答案会很棒,所以我可以关注他们并扩展我目前非常有限的知识。

【问题讨论】:

标签: google-chrome-extension google-apps-script


【解决方案1】:

如果您是从客户端 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();

};

【讨论】:

  • 这是一段使用非常古老的技术来实现兼容性的代码,但问题是专门针对 Chrome 扩展的,所以目标只是最近的 Chrome 版本。
【解决方案2】:

基本上我只是没有正确解析输出。我收到的输出包含很多东西,而我正在寻找的数字隐藏在那个乱七八糟的字符串中,总是在一个名为“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];
  }
}

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2021-11-22
    • 2017-03-30
    相关资源
    最近更新 更多