脚本功能
脚本功能提供了 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
}
}