Скрипт для копирования и вставки значений в первую пустую строку в электронных таблицах Google с нулем перед другими числами - PullRequest
0 голосов
/ 01 февраля 2019

Таким образом, код копирует содержимое Sheet1 B2: ячейка G2, B2 содержит код, который часто начинается с нескольких 0. Все хорошо в Sheet1, но как только скрипт выполняется и копируется в Sheet2, формат меняется на«Automatic, а« 000001 »становится просто« 1 ». Мне кажется, я не могу найти отсутствующий вариант, чтобы сделать его в формате Instantyl в виде простого текста, чтобы держать ноль впереди. Кроме того, ячейка G содержит €, поэтому я не хочучтобы установить всю строку как обычный текст, просто столбец B.

function moveValuesOnly() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getRange("Sheet1!B2:G2");
  var destSheet = ss.getSheetByName("Sheet2");
  destSheet.appendRow(source.getValues()[0]);
}

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Спасибо за эту тему.У меня была немного другая проблема для решения, но это дало мне вдохновение, и я решил поделиться ею.Я хотел обновить столбцы D: I с помощью существующих формул из D7: I7 каждый раз, когда редактирование вносилось в электронную таблицу.(В моем случае это чаще всего просто добавление данных в новую строку A: C.) Я хотел, чтобы он запускался только в том случае, если был изменен один конкретный лист (а не другие листы).

Кажется, это хорошо.

   function onEdit(e) {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sName = ss.getSheetName();
  Logger.log('Starting script...');

if (sName == 'Data'){
  Logger.log('We are editing the sheet name: "' + sName +'"'
            );
  var source = ss.getRange("Data!D7:I7");
  var destSheet = ss.getSheetByName("Data");
  var lastRow = destSheet.getLastRow();

  var destination = destSheet.getRange("D"+lastRow);
  destination.activate();
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMULA)
  } else
  Logger.log('Nothing Done. Sheet name: "' + sName + '"' );
}
0 голосов
/ 02 февраля 2019

Как насчет этой модификации?Я думаю, что есть несколько решений для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из них.В этой модификации в ваш скрипт было добавлено 2 строки.

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

  • После запуска appendRow() формат «Лист1! B2: G2» копируется вдобавленный ряд.При этом отображается «000001».

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

function moveValuesOnly() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getRange("Sheet1!B2:G2");
  var destSheet = ss.getSheetByName("Sheet2");
  destSheet.appendRow(source.getValues()[0]);

  var destination = destSheet.getRange(destSheet.getLastRow(), 1); // Added
  source.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMAT) // Added
}

Ссылки:

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

...