скопировать + вставить отображаемые значения Google Sheet - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть столбец с отформатированными идентификаторами (бразильский CPF).

Пользовательский ввод 12345678900 и отображаемое значение 123.456.789-00.

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

Я хочу скопировать «отображаемые значения» столбца в другой столбец, используя скрипт Google. Какой простой код для этого?

Я пытаюсь использовать al oop, но мой лист слишком большой и очень медленный!

Обновление ячейки в формате отображаемого значения не работает.

while (primeira_linha <= ultima_linha){
          var cpf_formatado = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("2020").getRange(primeira_linha,10).getDisplayValue();
          SpreadsheetApp.getActiveSpreadsheet().getSheetByName("2020").getRange(primeira_linha,10).setValue(cpf_formatado);
          primeira_linha++;

1 Ответ

2 голосов
/ 02 февраля 2020
  • Вы хотите получить значения из столбца "J" на листе 2020 в активной электронной таблице, используя getDisplayValue.
  • . Вы хотите поместить полученные значения в другой столбец как текст.
  • Вы хотите уменьшить стоимость процесса вашего текущего сценария.

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

Точка модификации:

  • В вашем скрипте getDisplayValue и setValue используются в l oop. При этом стоимость процесса становится высокой.

Шаблон 1:

В этом шаблоне для снижения стоимости процесса getDisplayValues и setValues используются без использования Л oop. Таким образом, значения извлекаются как текстовые значения и помещаются в них как текстовые значения.

Модифицированный скрипт:

Когда ваш скрипт модифицируется, он становится следующим. Перед запуском скрипта установите переменные.

var primeira_linha = ##;  // Please set the start row.
var ultima_linha = ##;  // Please set the end row.
var sourceColumn = 10;  // Source column. In this case, it's the column "J".
var destinationColumn = 10;  // Please set the column you want to put the values. In this case, it's the column "J".

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("2020");
var values = sheet.getRange(primeira_linha, sourceColumn, ultima_linha - primeira_linha + 1).getDisplayValues();
sheet.getRange(primeira_linha, destinationColumn, values.length, 1).setNumberFormat("@").setValues(values);
  • Из вашего скрипта кажется, что значения, полученные с помощью getDisplayValues из столбца «J», помещаются в тот же столбец. Таким образом, вышеописанный модифицированный скрипт - это тот же процесс.
  • И в этом случае, чтобы изменить формат ячейки, я использовал setNumberFormat("@"). В этом случае значения ставятся как текст. Если вы не хотите изменять формат ячейки. Удалите .setNumberFormat("@").

Шаблон 2:

В этом шаблоне используется copyTo. В этом случае значения копируются в формате ячейки.

Модифицированный скрипт:

var primeira_linha = ##;  // Please set the start row.
var ultima_linha = ##;  // Please set the end row.
var sourceColumn = 10;  // Source column. In this case, it's the column "J".
var destinationColumn = 10;  // Please set the column you want to put the values. In this case, it's the column "J".

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("2020");
var sourceRange = sheet.getRange(primeira_linha, sourceColumn, ultima_linha - primeira_linha + 1);
var destinationRange = sheet.getRange(primeira_linha, destinationColumn);
sourceRange.copyTo(destinationRange);

Ссылки:

Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...