javascript - 如何使用谷歌脚本覆盖具有相似名称和数据的现有谷歌表格?
问题描述
我做了一些谷歌搜索/研究,下面的代码最接近我想要完成的。
我有一个包含数据的电子表格,代码的作用是查看源工作表的A列,并使用该列中的名称创建新工作表,然后将与该名称匹配的所有行数据传送到新工作表。
这段代码工作得很好,我将不胜感激修改它的帮助:
- 而不是说“工作表已经存在”,它应该只覆盖具有相似名称的工作表。
复制匹配值时,应包括第一行(A1,标题行)
function backUP() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var templateSheet = ss.getActiveSheet(); var sheet1 = ss.getSheetByName("Source") var getNames = [...new Set(sheet1.getRange("A2:A").getValues().filter(String).toString().split(","))]; for (var i = 0; i < getNames.length; i++) { var copy = ss.getSheetByName(getNames[i]); if (copy) { Logger.log("Sheet already exists"); } else { var rowIndexes = sheet1.getRange("A:A").getValues() .map((value, index) => [value[0], (index + 1)]) .filter(value => value[0] === getNames[i]); var namedSheet = ss.insertSheet(getNames[i]); rowIndexes.map(index => { var rowValues = sheet1.getRange(index[1], 1, 1, sheet1.getLastColumn()).getValues(); namedSheet.appendRow(rowValues[0]); }); ss.setActiveSheet(ss.getSheetByName(getNames[i])); ss.moveActiveSheet(ss.getNumSheets()); } } }
解决方案
这对我有用。
if (copy) {
ss.deleteSheet(copy)
}
推荐阅读
- python - 读取列表的两个元素
- amazon-web-services - 我可以拍摄 AWS Elasticsearch 的手动快照并将其存储在不同区域的 s3 存储桶中吗?
- firebase - 群组共享数据的 Firebase 数据库规则
- azure - Azure API 管理无效的访问令牌
- php - 捕获 GuzzleHttp \ Exception \ ConnectException 并显示自定义消息
- flutter - 提示不适用于 Flutter 中的 DropdownButtonFormField
- python - 2个地理数据框之间的交集
- scala - Scala df Iterator 上缺少参数类型
- visual-studio-code - 如何在 VS Code 中为 vue mocha 单元测试配置调试?
- python - 空洞卷积的未知输出维度在下游连接层上产生错误