如何用Apps Script将Google Sheets购物清单导出至Google Doc?
解决方案
1. 核心脚本实现
打开你的Google Sheet,点击「扩展程序」→「Apps Script」,替换默认代码为以下内容:
function generateShoppingListDoc() { // 配置参数 - 根据你的表格实际情况修改 const SPREADSHEET_ID = "你的Google Sheet ID"; // 从Sheet URL的/d/与/edit之间提取 const SHEET_NAME = "购物清单"; // 存放已勾选物品的工作表名称 const DOC_TITLE = "合作社每周购物清单"; // 生成的Doc文档标题 // 获取工作表数据 const ss = SpreadsheetApp.openById(SPREADSHEET_ID); const sheet = ss.getSheetByName(SHEET_NAME); const data = sheet.getDataRange().getValues(); // 过滤空行,跳过表头(假设第一行是表头) const items = data.slice(1).filter(row => row[0].toString().trim() !== ""); // 若物品不在A列,将row[0]改为对应列索引(B列是1,C列是2,以此类推) // 创建或打开目标Google Doc let doc; const existingDocs = DriveApp.getFilesByName(DOC_TITLE); if (existingDocs.hasNext()) { doc = DocumentApp.openById(existingDocs.next().getId()); doc.getBody().clear(); // 清空旧内容 } else { doc = DocumentApp.create(DOC_TITLE); } // 写入格式化内容 const body = doc.getBody(); body.appendParagraph(DOC_TITLE).setHeading(DocumentApp.ParagraphHeading.HEADING1); body.appendParagraph(`生成时间: ${new Date().toLocaleString()}`).setFontSize(10).setItalic(true); body.appendPageBreak(); // 添加物品项目符号列表 items.forEach(item => { body.appendListItem(item[0]).setGlyphType(DocumentApp.GlyphType.BULLET); // 若物品不在A列,将item[0]改为对应列索引 }); doc.saveAndClose(); console.log(`购物清单已更新:${doc.getUrl()}`); }
2. 关键配置调整
- SPREADSHEET_ID:从你的Sheet URL中提取(例如URL为
https://docs.google.com/spreadsheets/d/abc123/edit,则ID为abc123) - SHEET_NAME:替换为你实际存放已勾选物品的工作表名称
- 列索引:如果物品名称不在A列,将代码中
row[0]和item[0]改为对应列的索引(B列对应1,C列对应2)
3. 运行与授权
- 点击脚本编辑器的「运行」按钮,首次运行需完成权限授权(允许脚本访问你的Google Sheet和Drive)
- 运行成功后,Google Drive根目录会生成(或更新)指定标题的Doc文档,直接打开即可打印
4. 可选:设置自动更新触发器
若需每周自动生成最新清单:
- 在脚本编辑器中点击「编辑」→「当前项目的触发器」
- 点击「添加触发器」,配置:
- 选择函数:
generateShoppingListDoc - 事件源:「时间驱动」
- 类型:「周计时器」
- 设置每周触发的具体时间(如每周日晚)
- 选择函数:
内容的提问来源于stack exchange,提问作者Nelson Mondale
相关产品推荐
相关产品推荐

