如果当前列(单元格)不为空,则在下一列(右侧的单元格)中写入值

时间:2019-06-25 09:51:39

标签: google-apps-script google-sheets

我有一些简单的代码,可以从不同的工作表获取数据并设置数据。

问题是,我想保留以前运行的数据,但是当然,每次我运行脚本时,它都会覆盖先前的数据。

任何IF语句只需将相同的值发布两次。我该怎么办?

非常感谢。

button.container.innerText=233

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将一列数据从一张纸写到另一张纸,而不要覆盖您在先前运行中写的列,而是想将数据写在下一空白列。

您可以在要写入的行范围内逐列进行迭代(直到256,这是工作表的最大列数),在这种情况下,从第5行开始第4行,第1行从第一行开始在if语句中使用isBlank函数[1]进行迭代,您可以检查范围是否为空并在其上写。

我测试了以下代码并按需工作:

function test3() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');
  var gcls = s.getRange(6, 10, 4).getValues();

  //write values in tab 2  
  var gSheet = ss.getSheetByName('Tracking');

  //Loop until finds empty range
  for(i=1; i<=256; i++) {
    // Warning: Be aware that getRange retrieves a Range type, not a cell. For more info check [2] 
    var gcells = gSheet.getRange(5, i, 4);
    if (gcells.isBlank()) {
       gcells.setValues(gcls);
       break;
    } 
  } 
}

[1] https://developers.google.com/apps-script/reference/spreadsheet/range#isblank

[2] https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column-numrows

相关问题