Очистить данные вместо удаления строки - PullRequest
0 голосов
/ 12 октября 2018

У меня есть скрипт ниже, который работает для того, что мне нужно, кроме окончания, где он удаляет строку.Что мне нужно, так это скопировать и вставить из листа Sheet1 в Sheet2 и очистить строку из листа sheet1, за исключением столбца A.

function copyrange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1'); //source sheet
var testrange = sheet.getRange('D:D');
var testvalue = (testrange.getValues());
var csh = ss.getSheetByName('Sheet2'); //destination sheet
var data = [];
var j =[];

//Condition check in D:D; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
if ( testvalue[i] == 'x') {
data.push.apply(data,sheet.getRange(i+1,1,1,11).getValues());
//Copy matched ROW numbers to j
j.push(i);
}
}
//Copy data array to destination sheet

csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).
setValues(data);


//Delete matched rows in source sheet ** I Need these to clear data 
from B:E for row that it copied and pasted rather then deleted it out.***
for (i=0;i<j.length;i++){
var k = j[i]+1;
sheet.deleteRow(k); // I have tried sheet.Clearcontents, with no sucess

//Alter j to account for deleted rows
if (!(i == j.length-1)) {
j[i+1] = j[i+1]-i-1;
}
}
}

1 Ответ

0 голосов
/ 01 ноября 2018

Мне удалось найти альтернативный способ очистки того, что мне нужно, с помощью другого сценария, который очищает любую оранжевую ячейку.Я использовал условное форматирование, чтобы заставить это работать.Увидеть ниже.Спасибо ....

function copyandclearorange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Research'); //source sheet
var testrange = sheet.getRange('L:L');
var testvalue = (testrange.getValues());
var csh = ss.getSheetByName('Log'); //destination sheet
var data = [];
var j =[];

//Condition check in L:L; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
if (  testvalue[i] == 'x') {
data.push.apply(data,sheet.getRange(i+1,1,1,11).getValues());
//Copy matched ROW numbers to j
j.push(i);
}
}
//Copy data array to destination sheet

csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);


var sheet = SpreadsheetApp.getActive().getSheetByName('Research');
var range = sheet.getDataRange();
var bgColors = range.getBackgrounds();
for (var i=0; i<bgColors.length; i++) {
for (var j=0; j<bgColors[i].length; j++) {
  if (bgColors[i][j] === '#ff9900') {
    range.getCell(i+1,j+1).clearContent();
  }
}
}
}
...