Google表格脚本填写列中的间歇性空白

时间:2016-11-17 20:24:53

标签: google-apps-script google-sheets

C列中有一个ID,它与多行有关,但只有第一行有ID。

我需要将ID值复制到下面的空白单元格,直到我点击其中包含其他值的单元格。

Picture of the spreadsheet

我尝试过修改此脚本但遇到超时错误。

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var last = sheet.getLastRow();//how many times should I do this?

  for (i = 5528; i < last; i++) { 
    var test = sheet.getRange(i, 1,1,1);
    //Logger.log(test);
  //looks to see if the cell is empty
    if (test.isBlank()) {
      var rewind = sheet.getRange(i-1, 1, 1, 1).getValues();//gets values from the row above
      sheet.getRange(i, 1, 1, 1).setValues(rewind);//sets the current range to the row above
    } 

  }
}

我被设置为一个很大的数字因为每次超时我都要重新开始!

我已经读过,最好将数组中的列引入,处理它,然后将其放回去以节省大量时间。

我试图改变它,但不能超越变量。

我是否在正确的轨道上?我想为未来提供一个解决方案,我可以通过一个列或范围并做同样的事情。

这是我失败的尝试:

function FillDown2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet2");
  var tracts = sheet.getRange("C15:C").getValues();
  var allTractList = [];
  var title;

  for (var row = 0, var len = tracts.length; row < len; row++) {
    if (tracts[row][0] != '') {
      //response = UrlFetchApp.fetch(tracts[row]);
      //doc = Xml.parse(response.getContentText(),true);
      title = tracts[row][0];
      //newValues.push([title]);  
      allTractList.push([title]);  
      Logger.log(title);
    } else allTractList.push([title]);
  }

  //Logger.log('newValues ' + newValues);
  Logger.log('allTractList ' + allTractList);

  // SET NEW COLUMN VALUES ALL AT ONCE!
  sheet.getRange("B15").offset(0, 0, allTractList.length).setValues(allTractList);
  return allTractList; 
}

1 个答案:

答案 0 :(得分:0)

圣吸烟!我做到了!

不确定为什么会发生错误,但我做了一些更改并让它发挥作用!

希望这对其他人有帮助:

function FillDown2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet2");
  var tracts = sheet.getRange("C15:C").getValues();
  var allTractList = [];
  var title;
  var len = tracts.length;

  for (var row = 0; row < len; row++) {
    if (tracts[row] != '') {
      //response = UrlFetchApp.fetch(tracts[row]);
      //doc = Xml.parse(response.getContentText(),true);
      title = tracts[row];
      //newValues.push([title]);  
      allTractList.push([title]);  
      Logger.log(title);
    } else allTractList.push([title]);
  }

  //Logger.log('newValues ' + newValues);
  Logger.log('allTractList ' + allTractList);

  // SET NEW COLUMN VALUES ALL AT ONCE!
  sheet.getRange("B15").offset(0, 0, allTractList.length).setValues(allTractList);
  return allTractList; 
}

归功于布莱恩here: