Google 表格公式与 Apps Script 自动化提示词(QUERY 函数、ARRAYFORMULA、定时触发、自动发邮件提醒)

团队用 Google 表格协作,想用 QUERY 一个公式做汇总、让整列公式自动扩展,或者用 Apps Script 做定时汇总、表单提交后自动处理、到期发邮件提醒时用:描述需求,AI 给出公式或脚本,以及授权、触发器配置和配额方面的注意事项。

NNathaniel bigo··原创首发·AI 辅助撰写
通用大模型 对话模型通用
你是一名精通 Google 表格和 Apps Script 的自动化顾问。请帮我实现下面的需求。

- 表格结构:[表格结构](例:工作表「订单」A 到 F 列为日期、客户、负责人、金额、状态、到期日)
- 需求:[需求](例:每天早上 9 点给负责人发邮件,列出 3 天内到期的订单)
- 使用方式:[使用方式](例:团队 5 人共同编辑)
- 偏好:[偏好](可选:优先用公式/可以写脚本)

公式部分(如果需求能用公式实现):
1. 优先考虑 QUERY 函数:说明其类似 SQL 的语法,列用字母表示,条件、分组、排序、透视的写法;日期条件的特殊格式。
2. 需要整列自动计算时用 ARRAYFORMULA,新增行无需复制公式;处理空行,避免出现大量无意义的结果。
3. 跨表格引用数据时的函数与授权提示。
4. 逐段解释公式。

脚本部分(如果需要自动化):
1. 完整的 Apps Script 代码,中文注释;批量读取和写入数据(一次读取整个区域,而不是在循环中逐个单元格读取),避免运行缓慢和超时。
2. 触发器:定时触发、编辑时触发、表单提交时触发的区别和设置方法;简单触发器与可安装触发器的权限差异。
3. 首次运行时的授权提示是什么意思、需要授予哪些权限。
4. 发邮件或调用外部服务时,提醒每日配额限制(具体数值以官方文档为准);邮件内容中不要包含不必要的敏感信息。
5. 错误处理与日志:出错时记录到一张日志表或给我发通知。
6. 测试方法:如何先用少量数据或只发给自己测试。

公式能解决的就不要写脚本。

高亮处换成你自己的内容:[表格结构]、[需求]、[使用方式]、[偏好]

ChatGPT Plus 充值

已被复制 0 次

使用说明

怎么填变量:[表格结构] 写清工作表名称和每一列的含义,QUERY 公式和脚本都要按列来引用。[需求] 写成「什么时候、对哪些数据、做什么」,例如「每天 9 点,找出状态不是已完成且 3 天内到期的订单,按负责人分别发邮件」。

常见坑:

  • 脚本在循环里逐个单元格读取和写入,几百行数据就运行很久甚至超时。应该一次读取整个区域到数组,处理完一次写回。
  • 用「编辑时」的简单触发器发邮件,因为权限受限而失败。需要发邮件等操作时,使用可安装的触发器。
  • QUERY 中按日期筛选时直接写日期字符串,结果为空。QUERY 的日期条件需要特定的写法。

追问技巧:追问「表单提交后,自动把新记录分配给负责人并发通知」,或「把这个脚本改成只在工作日运行」。

示例输出

示例,仅供参考(节选)

公式:按负责人汇总未完成订单金额,按金额降序:

=QUERY(订单!A1:F, "select C, sum(D) where E <> '已完成' and C is not null group by C order by sum(D) desc label sum(D) '未完成金额'", 1)

脚本:每天给负责人发即将到期提醒(节选):

javascript
function remindDueOrders() {
  const sheet = SpreadsheetApp.getActive().getSheetByName('订单');
  const rows = sheet.getDataRange().getValues().slice(1);   // 一次读取全部数据,去掉表头
  const today = new Date(); today.setHours(0, 0, 0, 0);
  const byOwner = {};
  rows.forEach(([date, customer, owner, amount, status, due]) => {
    if (!owner || status === '已完成' || !(due instanceof Date)) return;
    const days = Math.round((due - today) / 86400000);
    if (days >= 0 && days <= 3) (byOwner[owner] = byOwner[owner] || []).push(`${customer}:${days} 天后到期`);
  });
  Object.entries(byOwner).forEach(([owner, lines]) => {
    MailApp.sendEmail(lookupEmail(owner), '订单到期提醒', lines.join('\n'));
  });
}

触发器:在 Apps Script 编辑器左侧「触发器」中添加,选择「时间驱动 → 日定时器 → 上午 9 点至 10 点」。

同款作品

用这条提示词做出来的作品;原作者会因此获得积分

做同款

还没有同款,来做第一个。

Nathaniel 的更多内容

同主题

同模型

0 条评论

登录 后参与评论

还没有评论,来抢沙发~