如何在同一个函数中读写Google Sheets单元格?
实现Google Sheets写入H1并读取H2的脚本解析
你的脚本已经正确实现了向H1写入内容并读取H2单元格的核心逻辑,下面针对脚本细节做几点说明:
- 写入H1的逻辑无误:通过
spreadsheets.values.update接口,指定'BOTDATA'!H1范围写入用户输入的SteamID,USER_ENTERED的输入格式能保证内容按用户输入的样式解析。 - 读取H2的逻辑正确:使用
spreadsheets.values.get接口获取'BOTDATA'!H2的值,通过obj.data.values[0][0]提取单元格内容,但要注意如果H2为空,values会是undefined,建议增加空值判断避免报错。 - 延时
await setTimeout(1000)是为了确保写入操作完成后再读取,避免因网络延迟导致读取旧值,这个处理合理,若使用Google Sheets官方客户端,update本身是异步确认的,但保留延时能降低风险。
优化后的脚本(增加空值判断)
const { setTimeout } = require("timers/promises"); // 按需添加延时 async function blackList() { const sheets = google.sheets({ version: "v4", auth }); const spreadsheetId = "myidhere"; const sheetName = "BOTDATA"; const cells = ["H1"]; const valueInputOption = "USER_ENTERED"; const userInput = interaction.options.get('steamid').value; // 写入H1单元格 await sheets.spreadsheets.values.update({ spreadsheetId, range: `'${sheetName}'!${cells[0]}`, resource: { values: [[userInput]] }, valueInputOption, }); await setTimeout(1000); // 按需设置延时 // 读取H2单元格 const obj = await sheets.spreadsheets.values.get({ spreadsheetId, range: `'${sheetName}'!H2` }); // 增加空值判断,避免H2为空时报错 const value = obj.data.values ? obj.data.values[0][0] : null; // console.log(value); return value; } })()
注意事项
- 确保
auth变量已正确初始化,且拥有Google Sheets的读写权限。 - 若H2单元格可能为空,必须添加空值判断,否则会抛出
Cannot read properties of undefined (reading '0')的错误。
内容的提问来源于stack exchange,提问作者famq
相关产品推荐
相关产品推荐

