剪贴板
脚本功能
脚本功能提供了 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, 类型: StringmimeType, 类型: StringstatusCode, 类型: Intheader, 类型: 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 }}