调用谷歌应用脚本
Call Google App Scripts
我已经发布了一个应用程序脚本,我在浏览器中测试了查询字符串,它运行良好。我想向脚本发送一个 xmlhttprequest,但它显示 =>
XMLHttpRequest 无法加载 https://script.google.com/macros/s/XXXXXXXXXX/exec。 请求的资源上不存在"访问控制允许源"标头。因此,不允许访问源"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 个部分 - 您无法发布(非字符串化)对象,并且谷歌应用脚本上的错误没有 CORS 标头
解决方案:字符串化和分析对象
如果不将对象转换为字符串,浏览器将只发送 [Object 对象] 而不是信息。这将导致您的脚本出现错误,并且 Google 脚本的错误消息是没有 CORS 标头的 HTML 网页,这会触发 CORS 错误,但并不能真正告诉您真正的问题
为了能够成功发布参数,您必须将对象转换为字符串(例如,通过使用JSON.stringify()
),通过 google apps 脚本上的e.postData.contents
获取值,解析它,然后才能使用它,就好像它是一个对象一样。
当我读到我个人发现我无法在 javascript 中发送原始对象 - 通过帖子传递对象
您提到当您在浏览器中使用查询字符串对其进行测试时,代码有效,但是,它是不同的,因为这将是 GET 请求,并且会触发 doGet 而不是 doPost
这是最可能的解释,希望对您有所帮助!
在部署代码之前,请使用默认值测试代码,因为一旦部署代码,它可能会变得非常麻烦。您可以使用 https://hurl.it 来查看实际结果,而不会出错。
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- ng应用程序使脚本无限运行
- 需要使用谷歌应用程序脚本列出谷歌域下的所有网站
- 从应用程序脚本检查谷歌网站访问权限
- 在谷歌应用程序脚本中转换为空格的制表符
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 如何将我的脚本应用于通过无限滚动加载的图像
- HTML <输入>必需属性无法阻止表单在应用脚本应用中提交
- 我的原生脚本应用程序的最佳结构
- 将 JQuery 脚本应用于特定的网格视图
- 将 jquery 脚本应用于追加的数据
- 如何将灰度脚本应用于动态加载的图像
- 将多个代码镜像脚本应用于一个iframe
- SetInterval脚本应用于多个元素
- 在原生脚本应用程序中显示sqlite数据库数据有问题
- 如何使用用户脚本应用CSS
- 将脚本应用于通过jquery .html()插入的元素
- 将脚本应用于具有唯一id的多个视频标签's
- 一次只将 jquery 脚本应用于一个类