#javascript #google-apps-script #google-sheets
#javascript #google-apps-script #google-таблицы
Вопрос:
Я использую этот код для установки некоторых значений в зависимости от столбца, если дни <= -4
function SetValues(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var responses = ss.getSheetByName("tt");
var data = responses.getRange(1,1,responses.getLastRow(),responses.getLastColumn()).getValues();
data.forEach(function(row,i) {
var date = row [0];
var nombre = row [1];
var pidePor = row [2];
var fechaFin = row [3];
var dias = row [4];
if (dias <= -4){
var val = responses.getRange( i 1, 2).getValue();
responses.getRange( i 1, 2).setValue(val);
var val = responses.getRange( i 1, 3).getValue();
responses.getRange( i 1, 3).setValue(val);
var val = responses.getRange( i 1, 4).getValue();
responses.getRange( i 1, 4).setValue(val);
}
});
}
Он отлично работает на указанной вкладке, но что мне нужно, так это иметь возможность запускать его на всех моих листах, исключая некоторые вкладки
Кто-нибудь может мне помочь, пожалуйста, как это сделать?
Я пытался часами, но безуспешно
Спасибо!
Ответ №1:
Все, что вам нужно сделать, это поместить его в функцию-оболочку
numberAllTheSheets(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheets = ss.getSheets();
for (i=0; i<sheets.length; i ){//Avoids sheets named "sheet one" and "sheet four"
if sheets[i].getName=="Sheet One") continue;
if sheets[i].getName=="Sheet Four") continue;
SetValues(sheets[i]);
}
А затем измените установленные значения на:
function SetValues(responses){
var data = responses.getRange(1,1,responses.getLastRow(),responses.getLastColumn()).getValues();
data.forEach(function(row,i) {
var date = row [0];
var nombre = row [1];
var pidePor = row [2];
var fechaFin = row [3];
var dias = row [4];
if (dias <= -4){
var val = responses.getRange( i 1, 2).getValue();
responses.getRange( i 1, 2).setValue(val);
var val = responses.getRange( i 1, 3).getValue();
responses.getRange( i 1, 3).setValue(val);
var val = responses.getRange( i 1, 4).getValue();
responses.getRange( i 1, 4).setValue(val);
}
});
}
}
}
Ответ №2:
Попробуйте это:
function runSetValuesExceptForSomeSheets(){
var ss=SpreadsheetApp.getActive();
var sheets=ss.getSheets();
var excluded=['Sheet1','Sheet4'];//add names of sheets that are excluded
for (i=0;i<sheets.length;i ) {
if(excluded.indexOf(sheets[i].getName())==-1) {
var sheet=sheets[i];
var data=sheet.getDataRange().getValues();
for(var j=0;j<data.length;j ) {
if(data[i][4]<=4) {
var valA=sheet.getRange(i 1,2,1,3).getValues();//This makes no sense
sheet.getRange(i 1,2,1,3).setValues(valA);//This makes no sense
}
}
}
}
}