#google-apps-script #google-sheets
#google-apps-script #google-sheets
Вопрос:
У меня очень большой файл Google sheets с большим количеством листов, и мне нужен список листов, где в ячейке нет строки «описание». На некоторых листах она отсутствует или находится в неправильной ячейке, и мне нужно найти те, которые исправляют эти листы. Я не могу понять, как расширить этот код, который я нашел здесь. Я очень новичок в Google Sheets.
/*** return sheet names for active document
* @customfunction
*/
function sheetName() {
var out = new Array()
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i=0 ; i<sheets.length ; i ) out.push( [ sheets[i].getName() ] )
return out
}
Ответ №1:
Чтобы проверить одну ячейку:
function checkCell() {
let value = "description" // edit this for your value
let file = SpreadsheetApp.getActive();
let sheet = file.getActiveSheet(); // gets your active sheet
// gets value from cell A1
let valueToCheck = sheet.getRange("A1").getValue()
// Checking value
if(valueToCheck != value) {
// if NOT right value, print "FALSE"
Logger.log("FALSE")
}
}
Чтобы проверить все листы:
function checkSheets() {
let value = "description" // edit this for your value
let file = SpreadsheetApp.getActive();
let sheets = file.getSheets(); // gets all sheets in array
let numberOfSheets = sheets.length // gets number of sheets in total
let result = []; // initialize empty array
// for loop to run as many times as there are number of sheets
for (let i=0; i<numberOfSheets; i ) {
// Getting value from sheet cell A1
let valueToCheck = sheets[i].getRange("A1").getValue()
// Checking value
if(valueToCheck != value) {
// if NOT right value, get sheet name
let name = sheets[i].getName()
// Add to result array
result.push(name);
}
}
// Print sheets without right value to console
Logger.log(result)
}
Скопируйте это в свой редактор сценариев, запустите его, а затем перейдите к просмотру> Журналы.
Ссылки и дальнейшее Чтение
Ответ №2:
function findAll() {
const ss=SpreadsheetApp.getActive();
const shts=ss.getSheets();
let f=[];
shts.forEach(sh=>{
if(sh.getRange("A1").getValue()=="Description") {
f.push(sh.getName());
}
});
SpreadsheetApp.getUi().showModelessDialog(f.join('<br />'),"Sheets with String in A1")
}