问题描述
美好的一天,
我有一台 Wialon 本地服务器(GPS 监控系统),我计划使用时间驱动的可安装触发器更新共享的 Google 工作表。
根据 Wialon documentation,在浏览器中输入 API 调用时,我能够获得所需的响应。
但是,在 GAS 中,尝试从响应中检索数据时出现以下错误。
API 调用:
let apiURL = `http://my.tracking.site.come/wialon/ajax.html?svc=token/login¶ms={"token":"5dce19710a5e26ab8b7b898XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFCEED7DC03BC48FF5F8"}`
console.log(apiURL) // This URL works in a web browser as expected
var resText = UrlFetchApp.fetch(apiURL).getContentText() // error is raised on this line
console.log(resText)
错误:
11:48:27 AM Error
Exception: Invalid argument: http://my.tracking.site.come/wialon/ajax.html?svc=token/login¶ms={"token":"5dce19710a5e26ab8b7b898XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFCEED7DC03BC48FF5F8"}
wialonLogin @ wialon.gs:20
请告知我在这里做错了什么,因为我对 GAS 和 Wialon Remote API 的经验都很少......感谢任何帮助。
谢谢。
解决方法
解决方案是对 URL 进行编码。
let apiURL = `http://my.tracking.site.come/wialon/ajax.html?svc=token/login¶ms={"token":"5dce19710a5e26ab8b7b898XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFCEED7DC03BC48FF5F8"}`
console.log(apiURL) // This URL works in a web browser as expected
var urlEncoded = encodeURI(apiURL);
var resText = UrlFetchApp.fetch(urlEncoded).getContentText() // error is raised on this line
console.log(resText)