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

基于DriveApp.getFolderById的谷歌云盘文件检查与下载脚本优化

修改后的谷歌Apps Script代码(满足文件夹检查+修复完成提示)

以下是调整后的完整代码,已实现需求中的文件夹文件检查功能,同时修复了完成提示不生效的问题:

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('自定义菜单')
    .addItem('开始下载文件', 'showAlert')
    .addToUi();
}

function showAlert() {
  const ui = SpreadsheetApp.getUi();
  const ss = SpreadsheetApp.getActive();
  const folder_id = ss.getRange("Sheet1!J4").getValue();
  let targetFolder;

  // 验证文件夹ID是否有效
  try {
    targetFolder = DriveApp.getFolderById(folder_id);
  } catch (e) {
    ui.alert('错误:无效的文件夹ID,请检查Sheet1!J4中的值');
    return;
  }

  // 检查文件夹内是否已有文件
  const hasFiles = targetFolder.getFiles().hasNext();
  if (hasFiles) {
    const continueResult = ui.alert(
      '文件夹已有文件',
      '此文件夹已存储文件,是否仍要继续?',
      ui.ButtonSet.YES_NO
    );
    if (continueResult !== ui.Button.YES) {
      ui.alert('操作已取消');
      return;
    }
  }

  // 执行文件下载逻辑
  try {
    const sheet = ss.getActiveSheet();
    const lastRow = sheet.getLastRow();
    // 从第3行开始遍历到最后一行
    for (let i = 0; i < lastRow - 2; i++) {
      const rowNum = 3 + i;
      const url = sheet.getRange(rowNum, 1).getValue();
      const name = sheet.getRange(rowNum, 2).getValue();
      
      if (!url || !name) {
        sheet.getRange(rowNum, 3).setValue('跳过:URL或文件名为空');
        continue;
      }

      const blob = UrlFetchApp.fetch(url).getBlob();
      targetFolder.createFile(blob).setName(name);
      sheet.getRange(rowNum, 3).setValue('已完成');
    }
    // 确保任务完成提示在循环正常结束后触发
    ui.alert("任务已完成");
  } catch (e) {
    ui.alert(`执行出错:${e.message}`);
  }
}

关键修改说明:

  1. 文件夹有效性与文件检查
    • 先通过DriveApp.getFolderById()验证文件夹ID合法性,用try-catch捕获无效ID的错误
    • 用targetFolder.getFiles().hasNext()判断文件夹内是否存在文件,存在则弹出确认弹窗
  2. 优化冗余代码
    • 将工作表、文件夹实例等变量提到循环外,避免重复调用Google服务,提升执行效率
  3. 修复完成提示
    • 将任务完成提示放在try块末尾,确保所有下载操作正常执行完毕后才会弹出
    • 全局添加try-catch捕获执行错误,避免脚本中途崩溃导致提示不显示
  4. 新增容错处理
    • 遍历中遇到URL或文件名为空的行,会标记"跳过"并继续执行,不会中断整个任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:55:58