GAS Wialon 本地远程 API:检索登录数据

问题描述

美好的一天,

我有一台 Wialon 本地服务器(GPS 监控系统),我计划使用时间驱动的可安装触发器更新共享的 Google 工作表。

根据 Wialon documentation,在浏览器中输入 API 调用时,我能够获得所需的响应。

但是,在 GAS 中,尝试从响应中检索数据时出现以下错误

API 调用

  let apiURL = `http://my.tracking.site.come/wialon/ajax.html?svc=token/login&params={"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&params={"token":"5dce19710a5e26ab8b7b898XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFCEED7DC03BC48FF5F8"}
wialonLogin @ wialon.gs:20

请告知我在这里做错了什么,因为我对 GAS 和 Wialon Remote API 的经验都很少......感谢任何帮助。

谢谢。

解决方法

解决方案是对 URL 进行编码。

let apiURL = `http://my.tracking.site.come/wialon/ajax.html?svc=token/login&params={"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)