Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google应用程序内容服务脚本返回HTML而不是JSON_Javascript_Google Apps Script_Fetch - Fatal编程技术网

Javascript Google应用程序内容服务脚本返回HTML而不是JSON

Javascript Google应用程序内容服务脚本返回HTML而不是JSON,javascript,google-apps-script,fetch,Javascript,Google Apps Script,Fetch,尝试Content Service API,示例返回HTML,而它应该返回JSON,我做错了什么 试图发出请求的其他文件中的GAS: function myFunction() { var url = "published URL"; url+="?start=1325437200&end=1325439000"; var options = { method:"get" } var response = UrlFetchApp.fetch(url,opt

尝试Content Service API,示例返回HTML,而它应该返回JSON,我做错了什么

试图发出请求的其他文件中的GAS:

function myFunction() {
  var url = "published URL";
  url+="?start=1325437200&end=1325439000";

  var options = {
    method:"get"
  }
  var response = UrlFetchApp.fetch(url,options).getContentText();
  response = JSON.parse(response); //error, unexpected token <
}
函数myFunction(){
var url=“发布的url”;
url+=“?开始=1325437200,结束=1325439000”;
变量选项={
方法:“获取”
}
var response=UrlFetchApp.fetch(url,选项).getContentText();
response=JSON.parse(response);//错误,意外标记<
}

您对ContentService的使用是正确的,代码完全按照原样工作。以下是作为web应用程序发布的代码副本的链接:

您遇到的问题与授权或身份验证有关,如果发布的脚本未经授权,将返回一条HTML错误消息

要检查这是否是您的问题,只需直接在浏览器中访问已发布的URL。如果您看到显示JSON,那么授权不是问题。如果看到“需要授权才能执行该操作”错误消息,请打开已发布的脚本并从“运行”菜单中选择“doGet”,然后按照授权提示进行操作

更有可能的是,问题与脚本的发布方式有关。要从其他脚本访问您发布的脚本,必须将其发布时的“谁有权访问应用程序””设置为“任何人,甚至匿名”。如果您使用任何其他值,Google将返回一个HTML登录页面而不是JSON响应,您将看到错误

这是因为从Google Apps脚本通过URLFetchApp发送的请求没有经过身份验证,它们不携带运行代码的用户的凭据,并且以匿名请求的形式进入


如果您的发布设置中不允许“任何人,甚至匿名”,Google会将未经验证的请求重定向到Google登录页面

您对ContentService的使用是正确的,代码按原样工作。以下是作为web应用程序发布的代码副本的链接:

您遇到的问题与授权或身份验证有关,如果发布的脚本未经授权,将返回一条HTML错误消息

要检查这是否是您的问题,只需直接在浏览器中访问已发布的URL。如果您看到显示JSON,那么授权不是问题。如果看到“需要授权才能执行该操作”错误消息,请打开已发布的脚本并从“运行”菜单中选择“doGet”,然后按照授权提示进行操作

更有可能的是,问题与脚本的发布方式有关。要从其他脚本访问您发布的脚本,必须将其发布时的“谁有权访问应用程序””设置为“任何人,甚至匿名”。如果您使用任何其他值,Google将返回一个HTML登录页面而不是JSON响应,您将看到错误

这是因为从Google Apps脚本通过URLFetchApp发送的请求没有经过身份验证,它们不携带运行代码的用户的凭据,并且以匿名请求的形式进入


如果您的发布设置中不允许“任何人,甚至匿名”,Google会将未经验证的请求重定向到Google登录页面

您确定意外令牌不是报告某种错误的网页,例如,权限被拒绝。能否包含
响应的日志
?是否确定意外令牌不是报告某种错误的网页,例如权限被拒绝。你能提供
响应的日志吗
?我的问题是没有将应用程序设置为“任何人,甚至匿名”。Thank:-)@cameron,我是否可以在类似的google应用程序脚本中添加一个try/catch(返回类似OP的Json文本输出),并且除了有常规的成功输出外,还有一个错误输出(调用函数知道在.onerror函数中运行)?谢谢!我的问题是没有将应用程序设置为“任何人,甚至匿名”。Thank:-)@cameron,我是否可以在类似的google应用程序脚本中添加一个try/catch(返回类似OP的Json文本输出),并且除了有常规的成功输出外,还有一个错误输出(调用函数知道在.onerror函数中运行)?谢谢!
function myFunction() {
  var url = "published URL";
  url+="?start=1325437200&end=1325439000";

  var options = {
    method:"get"
  }
  var response = UrlFetchApp.fetch(url,options).getContentText();
  response = JSON.parse(response); //error, unexpected token <
}