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

为Google Drive导入的多工作表添加单元格触发的文件名筛选条件

优化Google Apps Script:按指定周数导入数据

修改核心逻辑

  1. 从目标工作表的B5单元格读取用户指定的周数(格式为WXX,如W09)
  2. 遍历指定Drive文件夹时,仅匹配文件名与该周数完全一致的电子表格
  3. 若找到对应文件,导入其指定工作表的数据;未找到则无操作

修改后的完整代码

function getdata() {
  // 声明变量
  var destinationSpreadsheet, destinationSS_ID, destsheet, destrange, file, files,
      sourcerange, sourceSS, sourcesheet, srcSheetName, sourcevalues, targetWeek;

  srcSheetName = "SOURCE TAB NAME";
  destinationSS_ID = "DESTINATION ID";
  // 读取目标工作表B5单元格的指定周数
  destinationSpreadsheet = SpreadsheetApp.openById(destinationSS_ID);
  destsheet = destinationSpreadsheet.getSheetByName('DESTINATION SHEET NAME');
  targetWeek = destsheet.getRange("B5").getValue().trim(); // 去除首尾空格

  // 校验周数格式(可选,增强容错)
  if (!targetWeek.match(/^W\d{2}$/)) {
    SpreadsheetApp.getUi().alert("请在B5单元格输入正确的周数格式,例如W09");
    return;
  }

  files = DriveApp.getFolderById("DRIVE ID").getFiles();

  while (files.hasNext()) {
    file = files.next();
    // 仅处理Google表格,且文件名与目标周数一致
    if (file.getMimeType() !== "application/vnd.google-apps.spreadsheet" || file.getName() !== targetWeek) {
      continue;
    };

    sourceSS = SpreadsheetApp.openById(file.getId());
    sourcesheet = sourceSS.getSheetByName(srcSheetName);
    // 检查源工作表是否存在
    if (!sourcesheet) {
      SpreadsheetApp.getUi().alert(`周数${targetWeek}的文件中未找到指定工作表${srcSheetName}`);
      continue;
    }

    // 获取源数据(跳过表头,取从第2行开始的所有行,共12列)
    const lastRow = sourcesheet.getLastRow();
    if (lastRow <= 1) {
      SpreadsheetApp.getUi().alert(`周数${targetWeek}的工作表中无有效数据`);
      continue;
    }
    sourcerange = sourcesheet.getRange(2, 1, lastRow - 1, 12);
    sourcevalues = sourcerange.getValues();

    // 将数据写入目标工作表末尾
    destrange = destsheet.getRange(destsheet.getLastRow() + 1, 1, sourcevalues.length, sourcevalues[0].length);
    destrange.setValues(sourcevalues);
    SpreadsheetApp.getUi().alert(`已成功导入周数${targetWeek}的数据`);
    break; // 找到对应文件后停止遍历,避免重复处理
  };
}

关键改动说明

  • 添加targetWeek变量,从目标工作表B5单元格读取用户指定的周数,并做格式校验
  • 遍历文件时增加file.getName() !== targetWeek的判断,仅处理匹配的文件
  • 增加源工作表存在性、数据有效性的校验,搭配弹窗提示提升用户体验
  • 找到匹配文件后执行break终止循环,避免不必要的遍历

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:08:18