【问题标题】:Consolidate data between 2 spreadsheets and delete data in source sheet with Google Apps Scripts使用 Google Apps 脚本合并 2 个电子表格之间的数据并删除源工作表中的数据
【发布时间】:2015-08-11 20:12:28
【问题描述】:

我一直在浏览不同的论坛和 stackoverflow,以在我的脚本中找到问题的解决方案。让我解释一下:

我有 2 个不同的电子表格,每个电子表格都包含一张工作表。我想将“Spreadsheet1 - Sheet 1”中的数据合并到“Spreadsheet2 - Data”。我的逻辑是将电子表格 1 中的数据复制到电子表格 2(这非常有效)。 但是,我还希望我的脚本删除在 Spreadsheet1 中找到的数据,这就是我被阻止的地方。我正在尝试使用“deleteRows()”方法,但这似乎无法正常工作。

这是我的脚本:

function Consolidate() {
   var source = SpreadsheetApp.openById('Spreadsheet1_unique_id');
   var sourcesheet = source.getSheetByName('Sheet1');

   var target = SpreadsheetApp.openById('Spreadsheet2_unique_id')
   var targetsheet = target.getSheetByName('Data');
   var targetrange = targetsheet.getRange(targetsheet.getLastRow(), 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
   var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
   targetrange.setValues(rangeValues);
   sourcesheet.deleteRows(2, sourcesheet.getLastRow());
}

我的 Google Apps 脚本的调试功能指示“那些行超出范围”。在这种情况下,这意味着什么?

通过搜索,我了解到我在 deleteRows() 中定义的第二个参数并不代表一系列行,而只是一行。知道我试图找到一种方法来得到正确的东西。然而,每次尝试都是由一个非工作脚本结束的。 我理解正确还是我弄错了?

有人知道如何达到预期结果吗?

非常感谢您的帮助!

【问题讨论】:

    标签: google-apps-script delete-row consolidation


    【解决方案1】:

    我在测试电子表格中运行了一些测试,只需添加一个 -1(因为您从第 2 行开始)它应该可以解决您的问题。

    function Consolidate() {
    var source = SpreadsheetApp.openById('Spreadsheet1_unique_id');
    var sourcesheet = source.getSheetByName('Sheet1');
    
    var target = SpreadsheetApp.openById('Spreadsheet2_unique_id')
    var targetsheet = target.getSheetByName('Data');
    var targetrange = targetsheet.getRange(targetsheet.getLastRow(), 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
    var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
    targetrange.setValues(rangeValues);
    sourcesheet.deleteRows(2, sourcesheet.getLastRow()-1);
    }
    

    希望这会有所帮助。有什么问题我会在cmets中回答。

    【讨论】:

    • 非常感谢@OrangeBender。它完美地解决了我的问题。这很容易,但我自己找不到......!但现在我明白了一点! ;)
    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多