微信小程序生态15- 批量提交微信小程序审核的一种方式
大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
以下是『微信小程序生态系列文章』正文!
需求背景
我们是一个提供SaaS服务的小程序服务商,会给每一个客户申请一个专属的小程序,到目前为止已经差不多有30几个了。由于『微信开放平台』没有用起来,导致我们每次升级版本都很痛苦,一次性要发布30几个小程序。
每个小程序都需要如下流程:

每个小程序的审核都需要这样操作,实在是太繁琐了而且效率非常低下,但由于作为一个程序员,只有小程序的开发权限,所以我只能尽量减少人工操作的环节,用脚本替代。
目前的脚本可以做到将指定代码上传到指定小程序的微信公众平台中,送审->发布的步骤需要借助小程序助手完成。
实现说明
准备材料
微信开发者工具,核心原理就是使用微信的cli工具来自动操作工具进行代码提交;

node环境,我将用js代码来实现这个脚本,要用到node来运行;

实现步骤
第一步、打开微信开发者工具—>设置 -> 安全设置中开启服务端口

第二步、核心执行脚本upload.js
代码内容如下:
//依赖包,执行cmd命令
const cp = require("child_process");
//依赖包,修改文件内容
const fs = require("fs");
//获取微信开发者工具的cli指令(Mac)
const cli = "/Applications/wechatwebdevtools.app/Contents/MacOS/cli";
//获取微信开发者工具的cli指令(Windows)
//const cli = "开发工具安装位置/cli.bat";
//当前小程序项目地址(替换成自己的)
const projectDir =
"/xxx/xxx/xxx/";
//定义当前版本号
const VERSION = "1.2.9";
//定义当前版本代码的说明
const UPDATE_MESSAGE = "活动";
//定义当前需要上传多少小程序
const list = [{
appId: "appId1",
appName: "小程序名称1",
}, {
appId: "appId2",
appName: "小程序名称2",
}];
//窗口执行命令工具方法
function exec(cmdStr) {
return new Promise((resolve, reject) => {
cp.exec(cmdStr, function (err, stdout, stderr) {
console.log(err, stdout, stderr);
if (err) {
reject(err);
} else {
resolve(stdout);
}
});
});
}
//更新project.config.json文件中的appId方法
function updateAppId(appId) {
return new Promise((resolve, reject) => {
try {
const projectPath = `${projectDir}project.config.json`;
let data = fs.readFileSync(projectPath, "utf8");
let jsonData = JSON.parse(data);
jsonData.setting.appid = appId;
jsonData.appid = appId;
fs.writeFileSync(projectPath, JSON.stringify(jsonData, "", 2));
console.log(jsonData);
resolve();
} catch (e) {
reject(e);
console.error("json error", e);
}
});
}
//主方法,for循环执行上传操作
async function main() {
console.log("准备工作、检查是否已经登录工具")
const result1 = await exec(`${cli} islogin`)
console.log(result1)
console.log("准备工作、打开指定项目")
const result2 = await exec(`${cli} open --project ${projectDir}`)
console.log(result2)
for (let index = 0; index < list.length; index++) {
const item = list[index];
console.log(`开始执行小程序:${item.appId}的代码upload操作`)
console.log("第一步、自动预览")
const result3 = await exec(`${cli} auto-preview --project ${projectDir}`)
console.log(result3)
console.log("第二步、更新project.config.json文件中的appId")
const result4 = await updateAppId(item.appId);
console.log(result4)
console.log("第三步、上传代码审核")
const result5 = await exec(`${cli} upload --project ${projectDir} -v ${VERSION} -d ${UPDATE_MESSAGE}`);
console.log(result5)
console.log(`执行小程序:${item.appId}的代码upload操作结束!`)
}
console.log("上传结束、关闭开发者工具")
const result6 = await exec(`${cli} quit`);
console.log(result6)
}
//执行命令
main();
该脚本的核心逻辑是使用cli命令控制微信开发者工具,遍历每一个需要送审的小程序,将指定目录下的代码提交到指定的小程序公众平台中,并将该版本变为开发版。
第三步、执行命令
node 'upload.js'
执行结果

第四步、开发版代码已提交
(PC端可查看)

(微信小程序助手可查看)

这个1.2.9版本就是我测试提交的,可以看到代码已经提交好了。
第五步、小程序助手提交小程序审核
小程序助手也是一个微信小程序,直接搜索就行了

点击进入小程序助手

点击刚才上传的版本后,可以直接提交审核

关于审核的结果,只需要关注一下『微信公众平台』,结果会自动推送

总结一下
其实微信开放平台是一个不错的工具,可惜我们前期没有用好,导致大量的小程序没有绑定上去,后面想绑定已经找不到小程序的管理员了。通过脚本的方法也不止这一种,微信公众平台提供了一个小程序的key文件,可以通过这个key文件调用一些接口,也可以实现批量送审。不过还是刚才那个原因,这个key的获取需要小程序管理员扫码,已经联系不到了。
上面的这种办法虽说还是要人肉操作小程序助手,但代码的提交已经可以自动化了,如果后面小程序助手开放出一些接口的话,不妨利用一下,也可以减少不少时间。
微信小程序生态15- 批量提交微信小程序审核的一种方式的更多相关文章
- 【转载】C#批量插入数据到Sqlserver中的三种方式
引用:https://m.jb51.net/show/99543 这篇文章主要为大家详细介绍了C#批量插入数据到Sqlserver中的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本篇, ...
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
- C#批量插入数据到Sqlserver中的三种方式
本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...
- C#_批量插入数据到Sqlserver中的四种方式
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
- C#批量插入数据到Sqlserver中的四种方式 - 转
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
- 2017-01-11小程序form表单提交
小程序form表单提交 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了微信端,用小程序固定的格式前前端进行布局.事件触发和数据的输送和读取,服务器端可以用任何后端语言写,但 ...
- vue 异步提交php 两种方式传值
1.首先要在php的入口文件写上一条代码,允许异步提交 header("ACCESS-CONTROL-ALLOW-ORIGIN:*"); 2.在vue有两种方式将数据异步提交到ph ...
- 微信小程序——创建自己的第一个小程序【一】
注册 微信小程序注册 https://mp.weixin.qq.com/wxopen/waregister?action=step1 填写账号信息 作为登录帐号,请填写未被微信公众平台注册,未被 ...
- JeeWx捷微3.1小程序版本发布,支持微信公众号,微信企业号,支付窗——JAVA版开源微信管家
支持小程序,JeeWx捷微3.1小程序版本发布^_^ JeeWx捷微V3.1——多触点小程序版本管理平台(支持微信公众号,微信企业号,支付窗) JeeWx捷微V3.1.0版本紧跟微信小程序更新,在 ...
- JAVA版开源微信管家—JeeWx捷微3.1小程序版本发布,支持微信公众号,微信企业号,支付窗
支持小程序,JeeWx捷微3.1小程序版本发布^_^ JeeWx捷微V3.1--多触点小程序版本管理平台(支持微信公众号,微信企业号,支付窗) JeeWx捷微V3.1.0版本紧跟微信小程序更新,在原有 ...
随机推荐
- Android Activity的事件分发机制-源码解析
查看Activity的dispatchTouchEvent方法: public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getActio ...
- android studio 做登陆界面
先来一个最简单的 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> &l ...
- Go语言实现分布式对象存储系统
实现一个可扩展的,简易的,分布式对象存储系统 存储系统介绍 先谈谈传统的网络存储,传统的网络存储主要分为两类: NAS,即Newtwork Attached Storage,是一个提供了存储功能和文件 ...
- “结巴”中文分词:做最好的 Python 中文分词组件
jieba "结巴"中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") C ...
- 深度学习04-(Tensorflow简介、图与会话、张量基本操作、Tensorboard可视化、综合案例:线性回归)
深度学习04-Tensorflow 深度学习04-(Tensorflow) Tensorflow概述 Tensorflow简介 什么是Tensorflow Tensorflow的特点 Tensorfl ...
- 2023-05-07:给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。 返回执行此操作后,grid 中最大的岛屿面积是多少? 岛屿 由一组上、下、左、右四个方向相
2023-05-07:给你一个大小为 n x n 二进制矩阵 grid .最多 只能将一格 0 变成 1 . 返回执行此操作后,grid 中最大的岛屿面积是多少? 岛屿 由一组上.下.左.右四个方向相 ...
- MySQL(Zip版)安装配置
MySQL官网下载地址:MySQL 将压缩包内文件夹解压至任意目录,以mysql-5.7.40版本为例 第一步 添加环境变量 将mysql-5.7.40-winx64文件夹内的bin文件夹添加到环境变 ...
- EasyExcel自适应列宽
import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Head; import com. ...
- 把ChatGPT调教成机器学习专家,以逻辑回归模型的学习为例
大家好我是章北海mlpy 看到一个蛮有意思的项目,可以把ChatGPT调教成导师 https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor 可以根据你选择的学习 ...
- 2020-12-19:系统load过高,你怎么去查?
福哥答案2020-12-20:[答案来自此链接:](http://bbs.xiangxueketang.cn/question/800)1.top命令查看该机器的负载状况.2.cd /proc/pid ...