You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:开发每日自动锁定对应日期电子表格工作表的脚本

自动锁定当日工作表的Google Apps Script实现

完整脚本代码

function lockDailySheet() {
  // 获取当日日期对应的工作表名称(1-31)
  const today = new Date().getDate().toString();
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = spreadsheet.getSheetByName(today);

  // 检查目标工作表是否存在
  if (!targetSheet) {
    console.log(`未找到名为${today}的工作表`);
    return;
  }

  // 获取工作表的保护设置,若不存在则创建新保护
  let sheetProtection = targetSheet.getProtections(SpreadsheetApp.ProtectionType.SHEET)[0];
  if (!sheetProtection) {
    sheetProtection = targetSheet.protect();
  }

  // 移除所有编辑例外范围
  const protectedRanges = sheetProtection.getEditableRanges();
  protectedRanges.forEach(range => sheetProtection.removeEditableRange(range));

  // 移除所有可编辑用户(仅保留所有者权限)
  const editors = sheetProtection.getEditors();
  editors.forEach(editor => sheetProtection.removeEditor(editor));

  // 可选:若需要允许特定用户(如管理员)仍可编辑,取消注释并替换邮箱
  // sheetProtection.addEditor("admin@yourclinic.com");

  console.log(`已成功锁定工作表:${today}`);
}

脚本说明

  • 日期匹配逻辑:通过new Date().getDate()获取当日日期数字,转为字符串后匹配"1"至"31"的工作表名。
  • 保护处理:先检查目标工作表是否已有保护,无则创建;随后移除所有预设的可编辑例外范围,同时移除所有普通编辑用户,仅保留文档所有者权限。
  • 容错处理:若当日对应的工作表不存在(如31号但当月无31天),脚本会打印日志并终止,避免报错。

设置每日自动触发

  1. 打开电子表格,点击顶部菜单「扩展程序」→「Apps 脚本」。
  2. 在脚本编辑器粘贴上述代码,保存项目(如命名为「DailySheetLock」)。
  3. 点击左侧时钟图标进入「触发器」页面,点击「添加触发器」。
  4. 配置触发器选项:
    • 运行函数:lockDailySheet
    • 部署类型:「基于时间的触发器」
    • 时间驱动类型:「日计时器」
    • 时间间隔:「每天 20:00 到 21:00」(可按需调整至20:00左右时段)
  5. 点击「保存」,按提示完成权限授权。

注意事项

  • 确保工作表名称严格为"1"到"31",无额外空格或符号,否则脚本无法匹配目标表。
  • 脚本需文档所有者授权,确保你拥有该电子表格的编辑权限。
  • 如需保留特定用户(如诊所管理员)的编辑权限,取消脚本中对应注释并替换为目标邮箱即可。

内容的提问来源于stack exchange,提问作者Michael Days

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:35:08