Запросите последнюю строку с данными в Google Sheet и установите пустые ячейки в "текст"
Я хотел бы запросить последнюю строку с данными листа Google с помощью Google Apps Script и установить для пустых ячеек значение "Не отвечено".
Я работал с одной ячейкой и, конечно, мог применить это к остальным 10 при необходимости, но я бы хотел просмотреть их, так как это будет более эффективно.
Вот мой единый код, который работает.
function SetValues() {
var ss = SpreadsheetApp.getActiveSheet();
var lastRow = ss.getLastRow();
var certVal = ss.getRange(lastRow,5,1).getValues();
if (certVal == ''){
ss.getRange(lastRow,5,1).setValue("Not Answered");
}
Logger.log(certVal)
}
1 ответ
function checkLastRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn());//Get last row and only that row.
var values = range.getValues()[0];//Get the defined ranges values
Logger.log(values)
for (var i in values) {//Loop through each value
Logger.log(values[i])
if (values[i] == "") {//Check to see if that value is blank.
values[i] = "Not Answered";
}
}//Outside the loop so it has finished and is holding all the changed values.
range.setValues([values]);//Write all the values back to the sheet with changes.
}
.getRange() имеет несколько параметров, здесь мы используем очень динамичный. (строка для начала, столбец для начала, сколько строк получить, сколько столбцов получить) это только определяет диапазон, который мы хотим.
.getValues () возвращает заданные значения фактического диапазона. Потому что мы получаем только одну строку или данные, поэтому в конце используется [0], чтобы получить массив ячеек. Регистратор покажет это. Если вы используете только.getValues (), он бы хотел [[cell1],[cell2]]. Используя [0], он возвращает только значения ячеек [cell1], [cell2], чтобы их можно было повторять по отдельности.
Цикл for в основном читает.
for (var i = 0; and i is <= values.length//the number of cells returned with getValues..; i++//everytime the loop gets to the end increase i by 1) {
perform action during loop on current object.(values[i])
}
То, как написано выше, является сокращением. для (варьирую в значениях){}.
Цикл for позволяет просматривать каждую ячейку в отдельности, которая возвращается из всей этой строки. поэтому каждый раз, когда он зацикливается и увеличивается на 1, он смотрит на значение следующей ячейки. Так это выглядит примерно так. Помните, что я меняюсь каждый раз, но это целое число.
Loop 1(values[0] = cell1)
Loop 2(values[1] = cell2)
Lopp 3(values[2] = cell3)
Таким образом, мы используем выражение "if для проверки значения", оно всегда выглядит как true или false.
if (values[i] == "")// if current cell is equal to blank then
{do something here if true}
Следующий шаг иногда бывает труден для понимания, но поскольку в скрипте есть значения, вы можете изменить их на лету, определив, какой объект вы хотите, и используя =, чтобы изменить его. Поэтому выше он знает текущую ячейку, в которой находится скрипт, и поскольку он находится внутри оператора if, он запускается только в том случае, если исходное значение пустое. Так что это просто меняется на "Не ответил"
переменная "range" определяет область, которую мы уже хотим, поэтому просто вызовите ее снова и используйте setValues (), чтобы вернуть все значения с внесенными изменениями.