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

如何编写Google Apps Script按日期将新文档移入对应年度季度文件夹

解决思路与代码实现

核心逻辑拆解

要实现按日期归档文档,需要完成三个关键步骤:

  • 根据当前日期计算对应的年份和季度
  • 按Projects/<year>/<quarter>的层级,检查目标文件夹是否存在,不存在则创建
  • 将目标文件夹赋值给newFolder,用于后续的文档复制操作

修正后的完整脚本

function onOpen() {
  DocumentApp.getUi()
    .createMenu("START")
    .addItem("Create New Doc", "copyDoc") // 修正菜单绑定的函数名,和定义的函数保持一致
    .addToUi();
}

function copyDoc() {
  var ui = DocumentApp.getUi();
  var response = ui.prompt("Name of Doc:", ui.ButtonSet.OK_CANCEL);
  var button = response.getSelectedButton();
  if (button == ui.Button.OK) {
    var docName = response.getResponseText();
    var templateId = "XXXXX";
    
    // ---------------------- 日期与文件夹处理核心逻辑 ----------------------
    var today = new Date();
    var year = today.getFullYear();
    // 计算季度:月份是0-11,+1后除以3取整得到1-4,拼接成Q1/Q2/Q3/Q4格式
    var quarter = "Q" + Math.floor((today.getMonth() + 1) / 3);
    
    // 获取或创建Projects根文件夹
    var projectsFolder;
    var projectsFolderList = DriveApp.getFoldersByName("Projects");
    if (projectsFolderList.hasNext()) {
      projectsFolder = projectsFolderList.next();
    } else {
      projectsFolder = DriveApp.createFolder("Projects");
    }
    
    // 获取或创建对应年份的文件夹
    var yearFolder;
    var yearFolderList = projectsFolder.getFoldersByName(year.toString());
    if (yearFolderList.hasNext()) {
      yearFolder = yearFolderList.next();
    } else {
      yearFolder = projectsFolder.createFolder(year.toString());
    }
    
    // 获取或创建对应季度的文件夹,最终赋值给newFolder
    var newFolder;
    var quarterFolderList = yearFolder.getFoldersByName(quarter);
    if (quarterFolderList.hasNext()) {
      newFolder = quarterFolderList.next();
    } else {
      newFolder = yearFolder.createFolder(quarter);
    }
    // ---------------------- 核心逻辑结束 ----------------------
    
    DriveApp.getFileById(templateId).makeCopy(docName, newFolder);
    ui.alert("文档已创建并归档到对应文件夹!");
  }
}

实用提示

  • 建议将Projects文件夹的查找方式替换为ID定位(DriveApp.getFolderById("你的Projects文件夹ID")),避免因重名文件夹导致的错误
  • 第一次运行脚本时会触发权限授权,按照提示完成授权即可正常使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:35:27