云控系统脚本开发批量管理

云控脚本函数详解:ecloud 云端调度的 API 全清单

云控平台 ecloud 的脚本函数全清单:getTaskInfo 取任务参数、数据共享表增删改查、动态数据接口、缓存接口(incrementCache 自增等),脚本内直接调用。

约 8 分钟

云控系统是跑在服务器上的管理后台。设备连上来之后,在网页里发任务、看状态、收数据。

云控脚本和单机脚本不一样,数据、任务、状态都在云端。单机脚本把这一遍跑完就行。云控脚本还得知道自己是哪台设备、当前任务叫什么、参数是什么、数据写到哪里。这些都在 ecloud 函数里,脚本直接调用,不用另对接接口,也不用单独集成 SDK。和云控的连接走平台内置通道。

云控脚本函数是什么,先看一个完整实例

EasyClick 中控设备分组管理界面展示云控数据共享表与任务调度功能

以 ecloud 开头的函数用来和云控交互:取云控上的数据、上报日志、读写数据共享表和缓存。常见用途是任务参数下发、账号数据共享、运行日志回传、状态上报。

任务参数在建任务时写入「参数设定」。脚本用 ecloud.getTaskInfo() 拿到 valueJson,再按名字取,例如 ts.valueJson["haoma"]、ts.valueJson['账号']。一段把取参和后续业务接起来的脚本如下:

function main() {
    // 如果自动化服务正常
    if (!autoServiceStart(3)) {
        logd("自动化服务启动失败,无法执行脚本");
        exit();
        return;
    }
    logd("开始执行脚本...{} = {}", ecloud.getDeviceNo(), ecloud.getCloudUrl());

    // 获取当前任务信息
    let ts = ecloud.getTaskInfo();
    if (ts == null) {
        logd("没有任务信息");
        return;
    }
    logd("任务信息:" + JSON.stringify(ts));
    logd(ts["taskName"]);
    if (ts.valueJson) {
        // 获取任务-参数设定中 名称 = haoma 的值
        logd("valueJson " + ts.valueJson["haoma"]);
        // 获取任务-参数设定中 名称 = 账号 的值
        logd("valueJson " + ts.valueJson['账号']);
    }

    // 这里开始编写你要的业务逻辑
    clickSettingTask();
    sleep(3000)
    // 对数据进行增删改查、追加和移出一条的演示
    dataOptDemo()
}

四组接口:基础、共享表、动态表、缓存

基础操作:

函数 作用
ecloud.log 发送日志到云控
ecloud.getDeviceNo() 获取机器编号
ecloud.getDeviceId() 获取设备 ID
ecloud.getCloudUrl() 获取云控的 URL 地址
ecloud.getTaskInfo() 获取当前任务信息(含任务名 taskName 与参数 valueJson)
ecloud.removeScriptFile() 清除脚本(一次性任务跑完自动清理)

数据共享表按组名组织,用来在设备之间共享账号、关键词这类业务数据:

function dataOptDemo() {
    // 按照组名获取数据
    let data = ecloud.getData({ "groupName": "账号组 2" });
    if (data) {
        logd("账号组 2 数据: " + JSON.stringify(data));
    }

    // 组名 + 指定的数据名 获取数据
    data = ecloud.getData({ "groupName": "账号组 2", "dataName": "001-1112" });

    // 新增数据
    let d = ecloud.addData({
        "groupName": "账号组 2",
        "dataName": ecloud.getDeviceNo() + "-111",
        "content": "xxx" + new Date()
    });

    // 更新数据
    let update2 = ecloud.updateData({
        "groupName": "账号组 2",
        "dataName": ecloud.getDeviceNo() + "-111",
        "content": "牛逼" + new Date()
    });

    // 按组 + 数据名删除数据
    // let remove2 = ecloud.removeData({ "groupName": "账号组 2", "dataName": "..." });
    // 按组删除数据
    let remove3 = ecloud.removeData({ "groupName": "账号组 2" });

    // 追加一行数据
    let append1 = ecloud.appendOneLineData({
        "groupName": "账号组 2",
        "dataName": ecloud.getDeviceNo() + "-111",
        "content": "我是要增加的数据 1"
    });

    // 删除一行数据
    let removeline1 = ecloud.removeOneLineData({
        "groupName": "账号组 2",
        "dataName": ecloud.getDeviceNo() + "-111",
        "content": "我是要增加的数据 1"
    });
}

函数速查:

函数 作用
getData 按组或组+数据名取得数据
getDataPop 取得并删除数据
addData 新增数据
updateData 修改数据
removeData 删除数据(按组或按组+数据名)
appendOneLineData 追加一条数据
removeOneLineData 删除一条数据

多台设备同时写共享表时,用 ecloud.getDeviceNo() 当作数据名的一部分,例如 设备编号-111,按设备隔开,避免互相覆盖。

动态数据接口适合表结构不固定的业务,用来动态创建和操作表:

函数 作用
dynamicCreateTable 动态创建更新表
dynamicQuery 动态查询表数据
dynamicAdd 动态增加表数据
dynamicUpdate 动态更新表数据
dynamicRemove 动态删除表数据

运行状态、计数、临时标记这类写得很勤的数据放缓存。共享表用来放账号、关键词。

函数 作用
addCache 新增缓存
getCache 获取缓存
updateCache 更新缓存
updateCacheExpire 更新过期时间
getCacheExpire 获取剩余过期时间
removeCache 删除缓存
appendOneLineCache 追加缓存
removeOneLineCache 删除一行缓存
incrementCache 自增缓存(计数器)
decrementCache 自减缓存
popPushCache push 或 pop 命令(队列操作)

同一条任务发到多台设备时,每台用 getTaskInfo() 读自己的 taskName 和 valueJson,按参数走不同分支。账号和关键词放共享表,设备之间都能读。表结构事先定不下来,就用动态表那一组。计数和队列走缓存:incrementCache / decrementCache 做自增自减,popPushCache 做 push / pop。每台设备的运行情况用 ecloud.log 送回云端。一次性任务跑完,调用 ecloud.removeScriptFile() 把脚本清掉,避免留在设备上。

想要真实跑起来?

本文介绍的方案均可在 EasyClick 手机自动化平台落地。官网提供完整文档、开发工具与群控云控产品,免费体验。

访问 EasyClick 官网 →