脚本功能

脚本功能提供了 JavaScript 扩展功能。

输出函数

如果想输出一个结果给「仓」,那么需要在脚本中定义一个名为 output异步(async)函数,通过它,仓才可以得到您想输出的结果。

output可以返回任意值,「仓」会当作字符处理,如果您想返回多个值,可以返回一个数组,当然数组中元素,「仓」也会当做字符处理。

// 注意:必须包含 `async` 关键字
async function output() {
  return true
}

变量

您可以使用「变量」功能,提前定义一些常用值,比如远程 API 的 Token 等等,当脚本运行时,「仓」会将这些变量注入到运行环境中。

功能入口:「剪贴板」-> 「脚本」,点击右上角 ... 图标,选择「变量」功能。

需要注意的是,为了区分脚本中程序定义的变量,注入的变量会已 $ 符号开头。

比如您在变量功能中定义了变量 token,那么注入后的变量名为 $token

为了方便使用,「仓」内置了一些变量:

  • $pasteboardContent: 系统剪贴板中字符内容,注意:需要为脚本打开「允许访问剪贴板」开关。
  • $searchText: 键盘脚本页面输入框中文本值,注意:因「仓」主程序中没有输入框,您可以使用 const str = $searchText || "固定值" 来测试。

内置函数

为了方便脚本的使用,「仓」为运行时注入了一些函数。

打印

函数名:$log

参数:String

示例:$log("hello, World!")

注意:$log 只接收一个参数,且会转为 String 处理。

网络请求

默认的 JavaScript 运行环境中是无法发起远程接口调用的,「仓」内置了 $http 函数,通过调用此函数,可以发起网络调用。

函数名: $http

这是一个异步函数,遇到错误会抛出异常,请使用 await / try...catch 调用此函数。

重要的事情说三遍:因为 $http 是异步函数,调用 $http 函数前请添加 await 关键字。

重要的事情说三遍:因为 $http 是异步函数,调用 $http 函数前请添加 await 关键字。

重要的事情说三遍:因为 $http 是异步函数,调用 $http 函数前请添加 await 关键字。

参数:$http 只有一个入参,为 Object 类型,对象中可以包含以下参数

  • url, 必选, 类型: String, 表示网络地址
  • method, 可选, 默认为 GET, 类型: String, GET/POST/DELETE/PUT/...
  • header, 可选, 默认为空, 类型: Object, key 与 value 均为 String 类型, http 请求头, 注意 header 头的 key 与 value 均为字符串类型
  • body, 可选, 默认为空, 类型: Object, key 为 String 类型, Value 可以为 任何 JavaScript 基础类型
  • timeout, 可选, 默认 15, 类型: Int, http 请求超时时间,单位为秒

$http 默认会已 json 格式编码 body,并发送请求。如果您需要发送 a=b&c=d 格式,请为 header 添加 Content-Type:application/x-www-form-urlencoded 参数。

返回值: $http 返回 Object 类型,对象中包含以下参数

  • data, 类型: String, 服务器返回数据,注意,这里始终会解析为字符串,如果需要解析为 json 类型,请使用 JSON.parse() 函数转换。
  • response, 类型: Object, 对象中包含服务端返回的其他数据

response 中的参数

  • url, 类型: String
  • mimeType, 类型: String
  • statusCode, 类型: Int
  • header, 类型: Object, 说明:服务端响应 header

调用示例:

// Get 请求
async function output() {
  try {
    const value = await $http({url: "https://fakestoreapi.com/products/1"})
    if (value.data) {
      let json = JSON.parse(value.data)
      $log(json["id"])
    }
    $log(value.response.url)
    $log(value.response.mimeType)
    $log(value.response.statusCode)

    let header =  value.response.header
    for(var key in header){
      $log(key + ' : ' + header[key])
    }
    return true
  } catch (error) {
    $log(error)
    return false
  }
}

// POST 请求
async function output() {
  try {
    const value = await $http({
      url: "https://dummyjson.com/todos/add",
      method: "POST",
      header: {
        "Content-Type": "application/json"
      },
      body: {
        todo: "Use DummyJSON in the project",
        completed: false,
        userId: 5
      }
    })
    if (value.data) {
      let json = JSON.parse(value.data)
      for(var key in json){
        $log("data " + key + ' : ' + json[key])
      }
    }
    $log(value.response.url)
    $log(value.response.mimeType)
    $log(value.response.statusCode)

    let header = value.response.header
    for(var key in header){
      $log(key + ' : ' + header[key])
    }
    return true
  } catch (error) {
    $log(error)
    return false
  }
}

results matching ""

    No results matching ""