当前位置: 首页 > 知识库问答 >
问题:

删除原始数据时,如何将数据从google Sheet1移动或复制到Sheet2,而不删除复制的数据

易弘亮
2023-03-14

我想要实现的目标:

  1. 当最后一列指示TRUE时,我将向相应的收件人发送一封电子邮件(创建一个按钮并将其分配给脚本)
  2. 仅当最后一列指示TRUE时将数据从Sheet1移动/复制到Sheet2
  3. 移动到Sheet2的数据将写入新行(追加新行)
  4. Sheet1中的数据将被删除,但不会影响Sheet2中的数据。

问题是什么:

  1. 数据不会从表1移动到表2

以下是我的代码:

function moveData(){
var app = SpreadsheetApp;
var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
var originalSheet = app.getActiveSpreadsheet().getSheetByName("Form 
Responses 4");
var copySheet = app.getActiveSpreadsheet().getSheetByName("Sheet2");
var lc = originalSheet.getLastColumn();
var lr = originalSheet.getLastRow();
var secondRangeTop = copySheet.getLastRow();

for (var i=2; i<=lr+1 ; i++){

var tempNumber = originalSheet.getRange(i,1,lr,lc).getValues();
var daTa = copySheet.getRange(secondRangeTop+1, 1, tempNumber.length, lc).setValues(tempNumber);
Logger.log(daTa);
}
return daTa; 
}

共有1个答案

郑锦
2023-03-14

在开始循环之前,您不会在工作表中获取值。您需要首先使用getValue(),因为它返回一个2D数组,然后您可以循环使用。修改后的脚本如下:

function moveData() {
  var app = SpreadsheetApp;
  var originalSheet = app.getActiveSpreadsheet().getSheetByName("Form Responses 4");
  var copySheet = app.getActiveSpreadsheet().getSheetByName("Sheet2");
  var lc = originalSheet.getLastColumn();

  // Get the whole original sheet as a 2D array
  var originalData = originalSheet.getDataRange().getValues();

  // Now you can start the loop (assuming one header row)
  // To delete rows, it's better to loop backward so your index doesn't change
  // I also prefer to store rows to delete in an array for removal after data has been copied
  var toDelete = [];
  for (var i=originalData.length-1; i>=0 ; --i) {
    if(originalData[i][lc] == "true") {

      // Move the data to copySheet
      copySheet.getRange(copySheet.getLastRow()+1, 1, 1, originalData[i].length).setValues([ originalData[i] ]);
      toDelete.push(i+1);
    }
  }
  // Finally, delete the original data row
  toDelete.forEach(function(i) {
    originalSheet.deleteRow(i)
  }
}
 类似资料:
  • 我在Android应用程序中使用Firebase实时数据库,并且有如下数据: 数据库映像 我想删除周末所有用户的“点”:选项卡。每个周末自动删除。我该怎么做呢。

  • 本文向大家介绍Oracle删除重复的数据,Oracle数据去重复,包括了Oracle删除重复的数据,Oracle数据去重复的使用技巧和注意事项,需要的朋友参考一下 Oracle  数据库中查询重复数据: select * from employee group by emp_name having count (*)>1;  Oracle  查询可以删除的重复数据 select t1.* from

  • 本文向大家介绍Mysql删除重复的数据 Mysql数据去重复,包括了Mysql删除重复的数据 Mysql数据去重复的使用技巧和注意事项,需要的朋友参考一下 MySQL数据库中查询重复数据 select * from employee group by emp_name having count (*)>1; Mysql  查询可以删除的重复数据 select t1.* from employee

  • 问题内容: 有没有一种有效的方法使用python从此数据中删除重复的“ person_id”字段?在这种情况下,只需保持第一次出现。 应成为: 问题答案: 假设您的JSON是有效语法,并且您确实在请求帮助,因为您将需要执行以下操作 如果要始终保留第一次出现,则需要执行以下操作

  • 问题内容: 我需要从数据库中删除重复的行。我可以用简单的SQL查询吗?如果没有,请告诉我一些快速算法。 例子: 我需要删除ID为2的行(或3,无论如何,它们是相等的,但不能同时都是)。谢谢你的帮助 问题答案: 正如评论中指出的那样,如果连续出现三遍,则此操作将无效。您可以重复运行此(繁重的)查询,直到停止删除内容为止,或者等待更好的答案…

  • 问题内容: 我有一张桌子,上面有一些ID +标题。我想使title列唯一,但是它已经有60万条记录,其中有些是重复的(有时是几十次)。 如何删除除一个以外的所有重复项,以便之后可以向标题栏添加一个唯一键? 问题答案: 此命令添加唯一键,并删除所有会产生错误的行(由于唯一键)。这将删除重复项。 编辑:请注意,对于某些版本的MySQL ,此命令可能不适用于InnoDB表。解决方法请参阅此帖子。(感谢“