Вставка в неправильную клетку - PullRequest
1 голос
/ 14 октября 2019

Итак, этот сценарий просто должен скопировать строку ячеек из одной электронной таблицы, вставить ее в другую, динамически определяя следующую ячейку для использования. По какой-то причине я не могу заставить его остановиться после однократной вставки или вставки в конце диапазона вместо верха. Полный нуб здесь, поэтому любая помощь приветствуется! Это полный сценарий, так что вы можете видеть, он должен быть довольно простым!

Опять же, проблема в том, что он либо вставляет диапазон в КАЖДУЮ ячейку в диапазоне (потому что он не знает, как остановиться)или он вставляет его только в нижнюю часть диапазона, а не в верхнюю, где он должен.

  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var source = ss.getRange ("SnapshotSpreadsheet!A2:L2");
  var destSheet = ss.getSheetByName("Monthly Balance Sheet");
  for (i=2; i<30; i++) {
    var destRange = destSheet.getRange(i - 1,1);
    var result = destRange.isBlank();
    if (result == "false"){
      var destRange =destSheet.getRange(i,1);}  
    else if (result == "true") {
      exit}
  }
 source.copyTo (destRange, {contentsOnly: true})```

Ответы [ 2 ]

1 голос
/ 15 октября 2019
  • Вы хотите скопировать значения SnapshotSpreadsheet!A2:L2 в первую пустую ячейку из строки 1 в строку 29 в столбце «А» на листе Monthly Balance Sheet.

Еслимое понимание правильное, как насчет этой модификации?

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

  • Чтобы завершить цикл for, используйте оператор break.
  • Когда выЕсли вы хотите сравнить логическое значение, вы можете использовать false и true вместо "false" и "true" соответственно. И в вашем случае вы также можете использовать if (result) { do something } else { do something }, потому что значения только true или false.

Pattern 1:

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

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

var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("SnapshotSpreadsheet!A2:L2");
var destSheet = ss.getSheetByName("Monthly Balance Sheet");
for (i = 2; i < 30; i++) {
  var destRange = destSheet.getRange(i - 1, 1);
  var result = destRange.isBlank();
  if (!result) { // Modified
    var destRange = destSheet.getRange(i, 1);
  } else {
    break; // Modified
  }
}
source.copyTo(destRange, {contentsOnly: true});

Шаблон 2:

В этом шаблоне первая пустая ячейка столбца "A" листа Monthly Balance Sheet извлекается с помощью getDataRegion.

var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("SnapshotSpreadsheet!A2:L2");
var destSheet = ss.getSheetByName("Monthly Balance Sheet");
var row = destSheet.getRange("A1").getDataRegion(SpreadsheetApp.Dimension.ROWS).getNumRows() + 1;
var destRange = destSheet.getRange(row, 1);
source.copyTo(destRange, {contentsOnly: true});

Ссылки:

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

0 голосов
/ 15 октября 2019
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("SnapshotSpreadsheet!A2:L2");
var destSheet = ss.getSheetByName("Monthly Balance Sheet");
for (i=2; i<30; i++) 
{
  if (destSheet.getRange(i - 1,1).isBlank())
  {
    var destRange = destSheet.getRange(i-1,1);
    break;
  }  
}
source.copyTo (destRange, {contentsOnly: true})```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...