谷歌表格:如何批量调用API函数填充列并设置24小时定时触发?
Google Sheets 批量调用API获取UUID对应名称并设置24小时定时触发
我来帮你搞定这个需求!你已经有了单个UUID获取名称的函数,接下来只需要写一个批量处理的函数,再配置定时触发就可以了,下面是具体步骤:
1. 编写批量处理函数
创建一个batchGetNamesFromUUIDs函数,它会自动读取B8到B列最后一行的UUID数据,逐个调用你已有的getNameFromUUID函数,最后把结果批量写入对应的C列单元格:
function batchGetNamesFromUUIDs() { // 获取当前活动工作表(如果需要指定特定表,改成getSheetByName("你的工作表名称")) const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 找到B列最后一行有数据的行,避免处理空行 const lastRow = sheet.getLastRow(); if (lastRow < 8) { // 若第8行及以上无数据,直接退出函数 return; } // 一次性读取B8到BlastRow的所有UUID值(比逐个读取单元格更高效) const uuidRange = sheet.getRange(8, 2, lastRow - 7, 1); const uuids = uuidRange.getValues(); // 准备存储结果的数组 const results = []; // 遍历每个UUID,调用已有函数获取名称 uuids.forEach(row => { const uuid = row[0]; const name = getNameFromUUID(uuid); results.push([name]); // 嵌套成数组,适配setValues的二维数组要求 }); // 批量将结果写入C8到ClastRow的单元格范围 const resultRange = sheet.getRange(8, 3, results.length, 1); resultRange.setValues(results); }
这个函数的核心优势:
- 自动识别有效数据范围,不处理空行
- 用
getValues()和setValues()批量读写数据,减少对Sheets的操作次数,提升运行效率 - 完全兼容你已有的
getNameFromUUID函数的错误处理逻辑
2. 设置24小时定时触发
有两种简单的方式可以配置定时触发:
方式一:手动在脚本编辑器设置
- 打开你的Google Sheets,点击菜单栏「扩展程序」→「Apps脚本」
- 在脚本编辑器界面,点击左侧的「触发器」图标(时钟形状)
- 点击右下角「添加触发器」按钮
- 在弹出窗口中配置:
- 「选择要运行的函数」:选择
batchGetNamesFromUUIDs - 「选择部署类型」:选择「时间驱动」
- 「选择时间触发类型」:选择「计时器」
- 「选择时间间隔」:选择「每24小时」
- 「选择要运行的函数」:选择
- 其他选项保持默认,点击「保存」完成设置
方式二:用代码自动创建触发器(可选)
如果你想通过代码一键创建触发器,只需要运行下面的函数一次即可:
function createDailyTrigger() { // 先检查是否已有同名触发器,避免重复创建 const existingTriggers = ScriptApp.getProjectTriggers(); const hasTrigger = existingTriggers.some(trigger => trigger.getHandlerFunction() === "batchGetNamesFromUUIDs"); if (!hasTrigger) { ScriptApp.newTrigger("batchGetNamesFromUUIDs") .timeBased() .everyHours(24) .create(); SpreadsheetApp.getUi().alert("24小时定时触发器已创建成功!"); } else { SpreadsheetApp.getUi().alert("该触发器已经存在,无需重复创建!"); } }
额外注意事项
- API调用限额:Google Apps Script的
UrlFetchApp有每日调用限额(当前为10000次/天),如果你的UUID数量较多,注意不要超过限额 - 限流处理:如果UUID数量过千,可以在循环中添加
Utilities.sleep(100)(暂停100毫秒),避免过快调用API导致被目标服务器限流
内容的提问来源于stack exchange,提问作者Joep
相关产品推荐
相关产品推荐

