通过URL访问Google Sheets按名称操作工作表实现数据追加与模板复制
完整可运行代码
// pseudo 为传入的目标工作表名称参数 function doGet(e) { const ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/IDXXX/edit#gid=0"); const targetSheetName = e.parameter.pseudo; let sheet = ss.getSheetByName(targetSheetName); // 目标工作表不存在时复制模板生成新表 if (!sheet) { const templateSheet = ss.getSheetByName("template"); sheet = templateSheet.copyTo(ss); sheet.setName(targetSheetName); } addData(e, sheet); // 返回执行结果,可根据需求调整 return ContentService.createTextOutput(JSON.stringify({status: "success", msg: "数据写入完成"})).setMimeType(ContentService.MimeType.JSON); } function doPost(e) { const ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/IDXXX/edit#gid=0"); const targetSheetName = e.parameter.pseudo; let sheet = ss.getSheetByName(targetSheetName); // 目标工作表不存在时复制模板生成新表 if (!sheet) { const templateSheet = ss.getSheetByName("template"); sheet = templateSheet.copyTo(ss); sheet.setName(targetSheetName); } addData(e, sheet); // 返回执行结果,可根据需求调整 return ContentService.createTextOutput(JSON.stringify({status: "success", msg: "数据写入完成"})).setMimeType(ContentService.MimeType.JSON); } function addData(e,sheet) { const id = e.parameter.id ; const date = e.parameter.date ; const textRef = e.parameter.textRef ; const niveau = e.parameter.niveau ; const cycle = e.parameter.cycle ; const vitesse = e.parameter.vitesse ; const reference = e.parameter.reference ; sheet.appendRow([id,date,textRef,niveau,cycle,vitesse,reference]); }
核心改动说明
- 新增工作表存在性校验逻辑:调用
getSheetByName返回null时判定为目标工作表不存在 - 新增模板复制逻辑:调用内置的
copyTo方法复制template模板工作表,再通过setName方法修改为传入的目标表名 - 修正原代码参数获取错误:原代码直接读取
e.pseudo不符合Google Apps Script的参数接收规则,目标表名统一从e.parameter.pseudo中读取 - 新增返回值配置:doGet/doPost执行完成后返回结构化JSON结果,避免接口调用时出现无返回值报错
内容的提问来源于stack exchange,提问作者moon
相关产品推荐
相关产品推荐

