Извлечение кадастровых №

столбец 26 (Z) google таблицы
 avatar
user_2065311
javascript
22 days ago
3.8 kB
0
Indexable
Never
'''

Инструкции по использованию извлечение кадастровых номеров столбец 26 (Z):

	1.	Откройте Google Sheets и перейдите в “Extensions” (Дополнения) -> Apps Script.
	2.	Удалите содержимое редактора и вставьте приведенный выше скрипт.
	3.	Сохраните проект.
	4.	Запустите функцию extractCadastreNumbers, чтобы начать процесс извлечения кадастровых номеров.
	5.	Просмотрите журналы выполнения (Logs), чтобы увидеть сообщения об отладке. Для этого перейдите в View -> Logs или нажмите Ctrl + Enter.

Объяснение:

	•	Чтение данных за один раз: Чтение всех строк за один раз и обработка их в памяти.
	•	Запись данных: Подготовка всех данных для записи за один раз и запись в диапазон ячеек.
	•	Без ограничения строк: Убраны ограничения на количество обрабатываемых строк, скрипт обрабатывает все строки за один раз.

Попробуйте этот финальный скрипт и посмотрите, как он работает. Он должен обрабатывать все строки за один раз и корректно 

'''
var descriptionColumn = 26; // Колонка с описанием

function extractCadastreNumbers() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();
  var startRow = 2;

  Logger.log('Начало обработки с строки: ' + startRow);

  // Регулярное выражение для поиска кадастровых номеров
  var cadastrePattern = /\d{2}:\d{2}:\d+:\d+/g;

  // Получение данных из колонки с описанием за один раз
  var range = sheet.getRange(startRow, descriptionColumn, lastRow - startRow + 1, 1);
  var descriptions = range.getValues();
  var cadastreNumbers = [];
  var outputData = [];

  // Извлечение кадастровых номеров
  descriptions.forEach((row, index) => {
    var text = row[0];
    var matches = text.match(cadastrePattern);
    cadastreNumbers.push(matches || []);
    Logger.log('Строка ' + (startRow + index) + ': найдено ' + (matches ? matches.length : 0) + ' кадастровых номеров');
  });

  // Найдите максимальное количество кадастровых номеров в одной ячейке
  var maxCadastres = Math.max(...cadastreNumbers.map(arr => arr.length));
  Logger.log('Максимальное количество кадастровых номеров в одной строке: ' + maxCadastres);

  // Подготовка данных для записи
  cadastreNumbers.forEach((matches) => {
    var row = new Array(maxCadastres).fill('');
    matches.forEach((match, index) => {
      row[index] = match;
    });
    outputData.push(row);
  });

  // Заполнение новой таблицы кадастровыми номерами
  if (outputData.length > 0) {
    var outputRange = sheet.getRange(startRow, descriptionColumn + 1, outputData.length, maxCadastres);
    outputRange.setValues(outputData);
    Logger.log('Данные записаны в диапазон: ' + outputRange.getA1Notation());
  }

  Logger.log('Обработка завершена. Все строки обработаны.');
}