首页 > 解决方案 > Apps 脚本:检查范围是否为空并复制数据

问题描述

我正在尝试使用 google 表格构建一个自动列表。第一张表(A)用于输入一周的生产数据。第二张表(B)应该是数据存档。因此,我希望将工作表 A 中的内容复制到工作表 B,然后在工作表 a 中删除。它应该被复制到工作表 B 的下一个空白区域。

我的问题必须在“while”或/和“if”的符号内,但似乎没有任何工作正常。

while 检查工作表 A 是否已清空,如果不是,“if”函数检查工作表 B 中的特定范围是否为空。如果是这种情况,它应该复制数据然后删除它。否则工作表 b 中范围的列将更改为下一个范围 (spaltennummer + 6)。

在进行故障排除时,它要么停留在一段时间内(发现没有空范围?),要么运行而没有任何影响。我试过“== 0”、“==”、“isblank”等等。(每个选项都可用?)。谷歌似乎无法为我提供答案......

感谢您的帮助。

代码:

function myFunction() {}
function leerzelle(){
 
  var spaltennummer = 4;
  var rangeDatenarchiv = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1").getRange(8,spaltennummer,15,5);
  var rangeDateneingabe = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dateneingabe").getRange("J8:N22");
  var values = rangeDateneingabe.getValues();

while(rangeDateneingabe !== 0){
 
  if(rangeDatenarchiv == 0) {
    rangeDatenarchiv.setValues(values);
    rangeDateneingabe.setValues("");
  }
  else{
    spaltennummer = spaltennummer + 6;
    
  }
 
}
}

标签: google-apps-scriptgoogle-sheetswhile-looprange

解决方案


尝试这个:

代码:

function leerzelle() {
  var spaltennummer = 4;
  // Data entry
  var rangeDateneingabe = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dateneingabe").getRange("J8:N22");

  var values = rangeDateneingabe.getValues();
  // While we have value in data entry sheet
  while (!rangeDateneingabe.isBlank()) {
    // Update archive everytime you increment in else
    var rangeDatenarchiv = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1").getRange(8, spaltennummer, 15, 5);
    // If archive range is blank, move values
    if (rangeDatenarchiv.isBlank()) {
      rangeDatenarchiv.setValues(values);
      rangeDateneingabe.clearContent();
    }
    else {
      spaltennummer = spaltennummer + 6;
    }
  }
}

笔记:

  • 您只是不能将范围与数字进行比较,isBlank而是用来检查它是否没有值。
  • 您不能setValues("")在范围上使用来删除内容,clearContent而是使用来删除这些值。
  • 每次使用递增的列号循环时,您都需要重新声明存档范围

参考:


推荐阅读