【问题标题】:How do I overwrite existing google sheet with similar name and data using google script?如何使用谷歌脚本覆盖具有相似名称和数据的现有谷歌表格?
【发布时间】:2020-04-18 06:47:12
【问题描述】:

我做了一些谷歌搜索/研究,下面的代码最接近我想要完成的。

我有一个包含数据的电子表格,代码的作用是查看源工作表的列 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());
        }
      }
    }
    

【问题讨论】:

标签: javascript arrays function google-apps-script google-sheets


【解决方案1】:

这对我有用。

 if (copy) { 

 ss.deleteSheet(copy)

 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    相关资源
    最近更新 更多