[英]Call Google App Scripts
我已经发布了一个应用程序脚本,我在浏览器中测试了查询字符串,它运行良好。 我想向脚本发送一个 xmlhttprequest,但它显示 =>
XMLHttpRequest 无法加载https://script.google.com/macros /s/XXXXXXXXXX/exec。 请求的资源上不存在“Access-Control-Allow-Origin”标头。 因此不允许访问源“ https://docs.google.com ”。
这是应用程序脚本代码:
function doGet(e){
Logger.log(e.parameter.id);
//other function
return ContentService.createTextOutput("Hello World");
}
这是客户端代码:
$.ajax({
url:'https://script.google.com/macros/s/XXXXXXXX/exec',
method:'POST',
data:{
id: "123123"
},
success:function(){
console.log("success");
}
});
有几个可能性,我自己之前就遇到过这个错误。 由于我的声誉不足以发表评论并要求澄清,我将写下最可能的原因。
此问题有 2 个部分 - 您不能发布(未字符串化的)对象,并且 google 应用程序脚本上的错误没有 CORS 标头
如果不将对象转换为字符串,您的浏览器将只发送 [Object object] 而不是信息。 这将导致您的脚本出现错误,而 Google Script 的错误消息是没有 CORS 标头的 HTML 网页,这会触发 CORS 错误,并不能真正告诉您真正的问题
为了能够成功发布参数,您必须将对象转换为字符串(例如,通过使用JSON.stringify()
),通过您的 google 应用程序脚本上的e.postData.contents
获取值,然后解析它把它当作一个对象来使用。
我个人在阅读时发现我无法在javascript 中发送原始对象- 通过 post 传递对象
您提到在浏览器中使用查询字符串测试代码时该代码有效,但是,它是不同的,因为这将是一个 GET 请求并且将触发 doGet 而不是 doPost
这是最可能的解释,希望对您有所帮助!
请在部署之前使用默认值测试您的代码,因为一旦您部署代码,它会变得非常麻烦。 您可以使用https://hurl.it来查看实际结果,而不会出现 cors 错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.