如何从Google Sheet中运行Python批量短信发送脚本?
实现Google Sheet内直接运行批量短信发送的方案
方案一:Google Apps Script(推荐,直接在Sheet内操作)
这是最贴合需求的方案,无需离开Google Sheet就能完成操作,步骤如下:
- 打开目标Google Sheet,点击顶部菜单栏「扩展程序」→「Apps Script」,进入脚本编辑器
- 删除默认的
myFunction代码,替换为以下代码(记得替换其中的Twilio信息):
// 替换为你的Twilio账户信息 const TWILIO_ACCOUNT_SID = '你的Twilio Account SID'; const TWILIO_AUTH_TOKEN = '你的Twilio Auth Token'; const TWILIO_FROM_NUMBER = '+18442251378'; // 你的Twilio发送号码 function sendBatchSMS() { // 打开指定工作表 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('Numbers to Send'); // 读取F3:F(号码)和G3:G(姓名)的数据,过滤空行 const numbersRange = sheet.getRange('F3:F').getValues().filter(row => row[0] !== ''); const namesRange = sheet.getRange('G3:G').getValues().filter(row => row[0] !== ''); // 循环发送短信 for (let i = 0; i < numbersRange.length; i++) { const number = numbersRange[i][0]; const name = namesRange[i][0]; if (!number || !name) continue; // 跳过空行 // 调用Twilio API发送短信 const url = `https://api.twilio.com/2010-04-01/Accounts/${TWILIO_ACCOUNT_SID}/Messages.json`; const payload = { 'To': number, 'From': TWILIO_FROM_NUMBER, 'Body': `Hello ${name}, this is a test message from Twilio.` }; const options = { 'method': 'post', 'payload': payload, 'headers': { 'Authorization': 'Basic ' + Utilities.base64Encode(`${TWILIO_ACCOUNT_SID}:${TWILIO_AUTH_TOKEN}`) } }; try { UrlFetchApp.fetch(url, options); console.log(`短信已发送给 ${name},号码:${number}`); } catch (e) { console.error(`发送失败给 ${name},号码:${number},错误:${e.message}`); } } SpreadsheetApp.getUi().alert('批量短信发送完成!'); } // 添加自定义菜单到Sheet顶部 function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('短信工具') .addItem('发送批量短信', 'sendBatchSMS') .addToUi(); }
- 保存脚本(点击编辑器左上角保存按钮,给脚本命名比如「批量短信发送」)
- 第一次运行点击编辑器顶部运行按钮,按提示完成授权(需允许脚本访问Sheet和调用外部API)
- 返回Google Sheet,顶部菜单栏会多出「短信工具」选项,家人点击「发送批量短信」即可执行
方案二:Google Colab共享笔记本(简单易上手)
如果家人能接受在线操作,这个方案几乎不用修改原有Python代码:
- 新建Google Colab笔记本,复制原有Python代码,做两处调整:
- 开头添加依赖安装和文件上传代码,用于上传
creds.json - 替换敏感信息为你的实际数据
- 开头添加依赖安装和文件上传代码,用于上传
- 调整后的代码示例:
!pip install twilio gspread from twilio.rest import Client import gspread from google.colab import files # 上传Google服务账号的creds.json文件 uploaded = files.upload() # 替换为你的Twilio账户信息 account_sid = '你的Twilio Account SID' auth_token = '你的Twilio Auth Token' client = Client(account_sid, auth_token) gc = gspread.service_account(filename='creds.json') # 打开指定Sheet sh = gc.open_by_key('你的Sheet ID') wk = sh.worksheet("Numbers to Send") # 读取数据并过滤空行 numbers = wk.batch_get(('f3:f',))[0] names = wk.batch_get(('g3:g',))[0] valid_data = [(names[i][0], numbers[i][0]) for i in range(len(names)) if names[i][0] and numbers[i][0]] # 批量发送短信 for name, number in valid_data: message = client.messages.create( to=number, from_='+18442251378', body=f"Hello {name}, this is a test message from Twilio.") print(f"Message sent to {name} at {number}")
- 点击「文件」→「共享」,设置权限为家人可编辑或查看(查看权限需让家人复制笔记本自行运行)
- 家人打开共享链接,点击「运行全部」,按提示上传
creds.json即可执行
方案三:封装成桌面程序(无需编程环境)
如果家人完全不想碰代码,可把脚本打包成桌面可执行文件:
- 本地安装PyInstaller:
pip install pyinstaller - 将
creds.json和脚本放在同一文件夹,执行打包命令:
# Windows系统 pyinstaller --onefile --add-data "creds.json;." 你的脚本文件名.py # Mac/Linux系统 pyinstaller --onefile --add-data "creds.json:." 你的脚本文件名.py
- 打包完成后,
dist文件夹里会生成可执行文件(.exe或.app) - 将可执行文件和
creds.json一起发给家人,双击即可运行(无需安装Python)
注意事项
- Twilio账户信息、Google服务账号
creds.json均为敏感信息,切勿随意共享 - 第一次运行需授权权限,提前给家人说明操作步骤
- 建议先测试少量数据,确保短信发送正常
内容的提问来源于stack exchange,提问作者Anthony Madle
相关产品推荐
相关产品推荐

