微信小程序生态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版本紧跟微信小程序更新,在原有 ...
随机推荐
- Activity中的setContentView(R.layout.xxx)源码分析
点进去会看到下图: 其中getWindow()是获取到Window类的唯一子类PhoneWindow的对象 找到PhoneWindow的setContentView()方法点进去: 1 @Overri ...
- facebook分享不能显示图片链接问题
<meta property="og:url" content="http://www.nytimes.com/2015/02/19/arts/internatio ...
- ASTAR机台(win7 p'rofessional)使用python tool中文显示异常问题解决
1.双击"computer"打开界面如下,再单击"open control panel"打开控制面板. 2.在控制面板中点击"Clock,Langua ...
- 对dubbo的DubboReference.check的参数进行剖析
背景 在使用dubbo的时候,发现当消费者启动的时候,如果提供者没有启动,即使提供者后来启动了,消费者也调不通提供者提供的接口了. 注册中心使用都是nacos dubbo版本是3.0.4 例子 接口 ...
- vue路由的两种方式(路由传参)
query和params区别 query类似 get, 跳转之后页面 url后面会拼接参数,类似?id=1, 非重要性的可以这样传, 密码之类还是用params刷新页面id还在 params类似 po ...
- ai问答:vue3+pinia+WebSocket 封装断线重连(实战)
把socket实例 挂载到全局 为方便梳理,请忽略typescript # main.ts import {createApp} from 'vue' import App from './App.v ...
- HTB靶场之-inject
准备: 攻击机:虚拟机kali. 靶机:Inject,htb网站:https://www.hackthebox.com/,靶机地址:https://app.hackthebox.com/machine ...
- 2023-02-17:sdl是跨平台的多媒体开发库,请问用go语言如何调用?
2023-02-17:sdl是跨平台的多媒体开发库,请问用go语言如何调用? 答案2023-02-17: 用 github.com/moonfdd/sdl2-go 这个库. 这是我自己写的golang ...
- 2022-02-20:设计内存文件系统。 设计一个内存文件系统,模拟以下功能: ls: 以字符串的格式输入一个路径。如果它是一个文件的路径,那么函数返回一个列表,仅包含这个文件的名字。如果它是一个文件
2022-02-20:设计内存文件系统. 设计一个内存文件系统,模拟以下功能: ls: 以字符串的格式输入一个路径.如果它是一个文件的路径,那么函数返回一个列表,仅包含这个文件的名字.如果它是一个文件 ...
- Django-账户用户忘记密码
方法1:Terminal命令 python manage.py changepassword admin Password: PY666666 Password (again): PY666666 方 ...