如何用Twilio返回的SID结果更新Google Sheet?
解决Google Sheet中更新Twilio短信SID到D列的问题
你已经实现了短信发送功能,现在只需要在循环里加入更新Sheet的逻辑即可,核心是找到对应行的D列单元格,把Twilio返回的message.sid写入进去。
关键修改点:
- 循环中当前条目对应的行号是
i+2(因为你的数据从第2行开始,循环索引i从0起步) - 可以用gspread的
update_cell方法直接指定行和列(D列是第4列),或者用A1格式的单元格范围来更新 - 建议加入空值判断,避免因Sheet中存在空行导致报错
修改后的完整代码:
import gspread from twilio.rest import Client # 初始化Twilio客户端 account = "xxxx" token = "xxxx" client = Client(account, token) # 连接Google Sheet gc = gspread.service_account() sh = gc.open("Twilio") worksheet = sh.worksheet("SMS") # 获取姓名和手机号数据(从第2行开始) names = worksheet.batch_get(('a2:a',))[0] numbers = worksheet.batch_get(('c2:c',))[0] # 循环发送短信并更新SID到D列 for i in range(len(names)): # 跳过空行(如果姓名或手机号为空) if not names[i] or not numbers[i]: continue # 发送短信 message = client.messages.create( from_="+18447011479", to=numbers[i][0], # 注意取列表中的实际值 body=f"Hello {names[i][0]}, this is a test message from Twilio.", media_url="https://raw.githubusercontent.com/dianephan/flask_upload_photos/main/UPLOADS/DRAW_THE_OWL_MEME.png" ) # 更新对应行的D列(第4列) # 方法1:用行号和列号 worksheet.update_cell(i+2, 4, message.sid) # 方法2:用A1格式的单元格地址(二选一即可) # worksheet.update(f"D{i+2}", [[message.sid]])
代码说明:
- 空值判断:加入
if not names[i] or not numbers[i]: continue,避免处理Sheet中的空行导致发送失败或更新错误 - 单元格定位:
i+2对应数据所在的行(比如i=0对应第2行,也就是A2/C2的位置),D列是第4列,所以update_cell(i+2, 4, message.sid)就能精准写入到对应位置 - 两种更新方式:
update_cell更直观,而update方法适合批量更新,这里单个单元格用两种方式都可以
内容的提问来源于stack exchange,提问作者montytx
相关产品推荐
相关产品推荐

