Запросите последнюю строку с данными в 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 ​​(), чтобы вернуть все значения с внесенными изменениями.

Другие вопросы по тегам