从外部URL调用函数

10
我希望能够在我的Google应用脚本中调用我编写的函数。当我执行getJSON时,我认为它会自动运行我的doGet(e)
我的JavaScript代码:
$.getJSON(https://script.google.com/macros/s/[ID]/exec, function(data){ 
   //code here
});

有可能调用我自定义的函数吗?例如:

我的谷歌应用脚本:

function getNumberOfFans(e){ 
   //code here
}

我需要在我的URL中添加某种额外的函数参数吗?

1个回答

32
  • 在“独立”或绑定的Apps Script文件中添加doGet(e)函数。
  • 将Apps Script文件发布为Web应用程序。
  • 获取Web应用程序的已发布URL。
  • 在URL末尾添加搜索字符串参数。

您可以向已发布的Web应用程序的URL添加搜索字符串参数。

这里是一个例子:

  • 在“独立”或绑定的Apps Script文件中添加doGet(e)函数。
  • 将Apps Script文件发布为Web应用程序。
  • 获取Web应用程序的已发布URL。
  • 在URL末尾添加搜索字符串参数。

您可以向已发布的Web应用程序的URL添加搜索字符串参数。

这里是一个例子:

https://script.google.com/macros/s/[ID]/exec?searchStringName=functionOne

搜索字符串位于URL末尾,紧随exec之后。您必须在exec后面加上问号,然后再添加name=value


url/exec?name=value

在这里,namevalue将被替换为您的选择。

将事件参数(用字母“e”表示)放入doGet(e)函数中,而不是您想要使用的函数中。

function doGet(e) {
  var passedString,whatToReturn;

  passedString = e.parameter.searchStringName;
  if (passedString === 'functionOne') {
    whatToReturn = functionOne();  //Run function One
  };

  return ContentService.createTextOutput(whatToReturn);
};

function functionOne() {
  var something;

  //. . . . Code;
  something = code here;
  return something;
};
上面的代码是用于GET请求的。如果你想使用POST请求,请不要在URL中使用查询字符串。对于POST请求,您需要在有效负载(payload)中发送信息。您仍然需要使用e.parameter来访问发送的数据,但是e.parameter中的内容将是一个带有键/值对的对象。您需要知道在对象中发送的键(属性)名称是什么。
关于URL参数的解释,请参阅此文档:URL Parameters

2
不错 - 我收藏了它! - Mogsdad
我总是收到错误信息:401_client_error,这是一个POST调用的错误,并且无法在网上找到一个案例来展示如何使用doPost。有什么想法吗?谢谢。 - Albert
你可能需要发布一个问题,详细说明你是如何进行POST请求的,并且你正在使用哪个doPost(e)函数。 - Alan Wells
@Albert:也许是因为你使用了像Postman这样的Rest客户端进行测试?在我的情况下,它也无法与Postman一起工作。但是当我尝试使用普通的<form>时,它按预期工作了。 - 0xh8h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接