如何编写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
相关产品推荐
相关产品推荐

