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

求可定时执行的Google Sheets脚本:通过URL重命名Drive文件

解决方案:基于Google Sheets文件URL批量重命名Drive文件并配置定时触发器

原脚本问题分析

原脚本依赖旧文件名匹配文件,但你的需求是通过文件URL定位文件,且读取的列(A/B列)与实际需要的D/E/F列不符,这是核心问题所在。

修正后的脚本

// 请根据实际情况修改这些常量
const SPREADSHEET_ID = "你的表格ID";
const SHEET_NAME = "Sheet1";
// 对应列的索引(从0开始:D列=3,E列=4,F列=5)
const COL_D = 3;
const COL_E = 4;
const COL_F = 5;

function renameFilesByUrl() {
  // 打开目标表格和工作表
  const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  const sheet = ss.getSheetByName(SHEET_NAME);
  // 获取数据行(跳过表头,从第2行开始)
  const data = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();

  data.forEach(row => {
    const newNamePart1 = row[COL_D];
    const newNamePart2 = row[COL_E];
    const fileUrl = row[COL_F];

    // 跳过空行或URL缺失的行
    if (!fileUrl || !newNamePart1 || !newNamePart2) return;

    try {
      // 从URL中提取Google Drive文件ID
      const fileIdMatch = fileUrl.match(/d\/([a-zA-Z0-9-_]+)/);
      if (!fileIdMatch) throw new Error(`无法从URL提取文件ID:${fileUrl}`);
      
      const fileId = fileIdMatch[1];
      // 获取Drive文件对象
      const file = DriveApp.getFileById(fileId);
      // 组合新文件名(可根据需求调整分隔符)
      const newFileName = `${newNamePart1}_${newNamePart2}`;
      // 重命名文件
      file.setName(newFileName);
      
      Logger.log(`已成功重命名文件:${file.getName()} -> ${newFileName}`);
    } catch (error) {
      Logger.log(`处理失败(URL:${fileUrl}):${error.message}`);
    }
  });
}

// 用于创建定时触发器的辅助函数
function createDailyTrigger() {
  // 删除已存在的同名触发器,避免重复
  const existingTriggers = ScriptApp.getProjectTriggers();
  existingTriggers.forEach(trigger => {
    if (trigger.getHandlerFunction() === "renameFilesByUrl") {
      ScriptApp.deleteTrigger(trigger);
    }
  });

  // 创建每天凌晨1点执行的触发器
  ScriptApp.newTrigger("renameFilesByUrl")
    .timeBased()
    .everyDays(1)
    .atHour(1)
    .create();
  
  Logger.log("已创建每日凌晨1点执行的触发器");
}

关键说明

  • 文件ID提取:通过正则表达式从Drive文件URL中提取唯一ID,适配常见的Drive文件链接格式(如https://drive.google.com/file/d/xxx/view或https://drive.google.com/open?id=xxx)
  • 容错处理:跳过空行、缺失必要数据的行,并捕获错误输出日志,避免单个文件处理失败导致整个脚本中断
  • 列配置:常量COL_D/COL_E/COL_F对应你需要的D、E、F列,若列位置变化可直接修改索引值

配置定时触发器步骤

  1. 打开脚本编辑器,点击顶部菜单的编辑 > 当前项目的触发器
  2. 点击右下角的添加触发器
  3. 配置选项:
    • 选择要运行的函数:renameFilesByUrl
    • 选择事件源:时间驱动
    • 选择时间类型:日计时器
    • 选择时间:凌晨1点到2点
  4. 点击保存完成配置

或者直接运行一次createDailyTrigger函数,自动创建触发器(需授权)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:07:37