如何修改Google Apps Script代码将CSV导入指定gid的Google Sheets工作表
解决方法
你可以通过getSheetById()方法直接通过gid获取目标工作表,不需要通过工作表名称匹配,修改逻辑如下:
- 首先获取目标工作表的gid:打开你要导入数据的目标工作表,浏览器地址栏末尾
#gid=后的数字即为该工作表的gid - 将原代码中通过
getSheetByName()获取工作表的逻辑替换为通过gid获取即可 - 顺带优化原代码的写入逻辑:原来逐行写入的方式效率很低,可直接批量写入整个CSV数据,无需循环
修改后可直接使用的代码
function myFunction() { function importData() { var ss = SpreadsheetApp.getActive(); var url = 'https://your-data-source.csv'; var text = UrlFetchApp.fetch(url).getContentText(); var csvData = Utilities.parseCsv(text); // 替换下方的123456为你实际的目标工作表gid var sheet = ss.getSheetById(123456); // 直接批量写入所有CSV数据,无需逐行循环 sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); } importData(); }
兼容旧版本的备用方案
如果部分环境不支持getSheetById(),可以用遍历所有工作表匹配gid的方式实现:
// 自定义通过gid获取工作表的方法 function getSheetByGid(ss, targetGid) { var sheets = ss.getSheets(); for(var i=0; i<sheets.length; i++) { if(sheets[i].getSheetId() == targetGid) { return sheets[i]; } } return null; } function myFunction() { function importData() { var ss = SpreadsheetApp.getActive(); var url = 'https://your-data-source.csv'; var text = UrlFetchApp.fetch(url).getContentText(); var csvData = Utilities.parseCsv(text); // 替换下方的123456为你实际的目标工作表gid var sheet = getSheetByGid(ss, 123456); if(sheet) { sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); } } importData(); }
内容的提问来源于stack exchange,提问作者Mickael Lesouef
相关产品推荐
相关产品推荐

