google.script.run独立使用

时间:2014-12-30 07:08:20

标签: javascript google-apps-script

既然Google Apps脚本的客户端与HtmlService是独立的,我希望选择独立于客户端开发它(主要是为了获得普通编辑器,js和css文件的好处而不是被打扰沙盒)。这可能意味着在服务器端脚本上实现我自己的doGet / doPost,但是我放弃了使用google.script.run直接调用函数并接受结果的精确性。

So, is there a way to use google.script.run independently? 

1 个答案:

答案 0 :(得分:1)

您可以通过网站中的AJAX请求调用Google Apps脚本内容服务并获取返回值。

Google Documentation - Content Service

这不使用google.script.run API,但它基本上是相同的。如果你想要的是运行Apps Script服务器端代码而不向用户显示任何内容,那么你可以通过JavaScript(jQuery等)AJAX调用Apps Script Content Service应用URL来实现。

假设您有一个名为“runAjaxToGetNames”的JavaScript函数。它用以下行调用:

runAjaxToGetNames("https://script.google.com/macros/s/AKfycbyFyODk/exec");

传递的参数是Apps Script Stand Alone Content Service应用程序的URL。

AJAX函数如下所示:

function runAjaxToGetNames(argURL_forAJAX) {

  console.log('runAjaxToGetNames ran: ' + argURL_forAJAX);

  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);

      glblStoreNames.names = xmlhttp.responseText;
      //console.log'return value into the global object?: ' + glblStoreNames.names);
      //Call a function to populate the store names
      populateStoreNames();

    };
  };

  xmlhttp.open("GET",argURL_forAJAX,true);
  xmlhttp.send();
};

Apps Script内容服务是一个文件,只有以下代码:

//This Apps Script is to get a list of all the names out of a Google Doc.
function doGet() {
  var theGogDocReference = DocsList.getFileById('YWY4ZmM5OQ_File_ID_Here');
  var theContent = theGogDocReference.getContentAsString();
  return ContentService.createTextOutput(theContent);
};