Как получить последнюю ячейку определенного столбца в листе Google, используя скрипт приложения Google? - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу добавить контент в последнюю строку определенного столбца.
Например, текущее состояние моего листа Google:

x  A            B          C
1  value1ofA    value1ofB  value1ofC
2  value2ofA    value2ofB  value2ofC
3               value3ofB  value3ofC
4                          value4ofC

Иногда я хочу добавить значение value5ofC в столбец C
Иногда я хочу добавить значение value4ofB в столбец B
Иногда я хочу добавить значение value3ofA в столбец A

Я знаю, как вставить значение в одну ячейку, используя диапазон

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];
sheet.getRange(5, 5).setValue('value5ofC') // This will set content at cell of 5th row and 5th column

В этом примере кода я знаю местоположение последней ячейки столбца C. Если я хочу автоматизировать ее, я хочу узнать местоположение последней ячейки, чтобы я мог заполнить ее некоторым содержимым.

Я могу узнать последнюю строку целого листа, используя sheet.getLastRow() Но я хочу последнюю строку определенного столбца.

Как найти местоположение последней ячейки любого столбца?

1 Ответ

0 голосов
/ 30 ноября 2018
  • Вы хотите получить номер последней строки для каждого столбца на листе.

Если мое понимание вашего вопроса правильное, как насчет этого ответа?Я думаю, что есть несколько решений для вашей ситуации.Поэтому, пожалуйста, подумайте о них как о трех из них.

Шаблон 1:

В этом примере сценария он извлекает последнюю строку определенного столбца, давая букву столбца.В качестве примера извлекается последняя строка столбца «С».

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];

var col = "C"; // Please input the column letter.
var res = sheet.getRange(col + ":" + col).getValues().filter(String).length;
Logger.log(res)

Когда этот скрипт используется для вашей таблицы образцов, возвращается 4.

Шаблон 2:

В этом примере сценария извлекаются последние строки всех столбцов.Сначала извлекаются все значения ячеек.Затем массив, включающий значения, транспонируется, и последние строки извлекаются.

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];

var values = sheet.getDataRange().getValues();
var res = values[0].map(function(_, i) {return values.map(function(r) {return r[i]}).filter(String).length});
Logger.log(res)

Когда этот скрипт используется для вашей таблицы примеров, возвращается массив [2.0, 3.0, 4.0].В этом случае индекс массива означает индекс столбца.Таким образом, в этом случае последние строки столбцов «A», «B» и «C» означают 2, 3 и 4 соответственно.

Pattern 3:

Pattern 1 и 2Можно использовать для листа, что все ячейки столбца заполнены значениями.Из вашей таблицы примеров, я предложил выше 2 модели.Но если вы хотите получить последнюю строку столбца, включая пустые ячейки, вы можете использовать скрипт, как показано ниже.

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];

var col = "C";
var values = sheet.getRange(col + ":" + col).getValues();
var lastRow;
for (var i = values.length - 1; i >= 0; i--) {
  if (values[i][0]) {
    lastRow = i + 1;
    break;
  }
}
Logger.log(lastRow)

Ссылки:

Если я неправильно понял ваш вопрос, пожалуйста, сообщите мне.Я хотел бы изменить его.

...