如何修改Google Apps Script以指定Google工作表中的特定工作表?
修改Google Apps Script以定位指定工作表
要让脚本仅操作名为"Calendar"的工作表,只需修改获取工作表的逻辑,还可添加简单错误校验,具体修改如下:
核心修改点
- 替换原脚本中获取工作表的语句:
原代码:
修改为:var sheet = SpreadsheetApp.getActiveSheet();// 获取当前打开的电子表格文件 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 精准定位到名为"Calendar"的工作表 var sheet = spreadsheet.getSheetByName("Calendar"); // 可选:如果找不到目标工作表,抛出错误提示 if (!sheet) { throw new Error("未找到名为'Calendar'的工作表,请检查名称拼写是否正确"); }
修改后的完整脚本
function export_gcal_to_gsheet() { var mycal = "email"; var cal = CalendarApp.getCalendarById(mycal); var events = cal.getEvents(new Date("July 01, 2022 00:00:00 UTC"), new Date ()); // 修改部分:定位指定工作表 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getSheetByName("Calendar"); if (!sheet) { throw new Error("未找到名为'Calendar'的工作表,请检查名称拼写是否正确"); } sheet.clearContents(); var header = [["Calendar Address", "Event Title", "Event Description", "Event Location", "Event Start", "Event End", "Calculated Duration", "Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All Day Event", "Recurring Event"]] var range = sheet.getRange(6, 1, 1, 14); range.setValues(header); for (var i = 0; i < events.length; i++) { var row = events.length + 6 - i; var myformula_placeholder = ''; var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent()]]; var range=sheet.getRange(row,1,1,14); range.setValues(details); var cell=sheet.getRange(row,7); cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+ ')+(MINUTE(E' +row+ ')/60))'); cell.setNumberFormat('.00'); } }
说明
getActiveSpreadsheet()用于获取当前操作的Google电子表格文件,再通过getSheetByName("Calendar")精准定位目标工作表,替代了原代码中默认取激活/最左侧工作表的getActiveSheet()。- 新增的错误判断可避免因工作表名称错误、工作表不存在导致的后续代码无效执行,快速定位问题。
内容的提问来源于stack exchange,提问作者RoosterMagic22
相关产品推荐
相关产品推荐

