Исключение: Стартовый ряд диапазона слишком мал - Номера журналов Почему? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть скрипт basi c, чтобы взять числа из листа и использовать их для создания диапазона, а также использовать функцию последнего столбца. У меня был диапазон ошибок слишком мал для диапазона публикаций.

Когда я записываю выходные данные для номеров столбцов и строк, они получаются, как и ожидалось!

Сначала я думал, что это потому, что один был последним извлечением столбца, а другой вытягивал целое число из ячейки на листах, так как они приходили с десятичными знаками, поэтому я преодолел это с помощью преобразования в число и последующего удаления десятичных знаков с помощью .tofixed (), но это тоже не работает. Есть идеи?

 function weeklyData() {
  var sourcess = SpreadsheetApp.openById('1B93Oq2s9Nou5hVgOb3y3t15t9xnqRMBnrYkAed-oxrE');  // key of source spreadsheet
  var sourceSheet = sourcess.getSheetByName('Measures & Answers');  // source sheet name - change to your actual sheet name
  var lr = Number(sourceSheet.getRange(2,3).getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow()).toFixed(0);

for(var i=0;i<lr+1;i++){ 
  var dataValue = sourceSheet.getRange(i+2,3).getValue(); //This weeks numbers to update into table

  var rowdataRange = sourceSheet.getRange(i+2,4).getValue(); //The row that the data needs to be pasted
  var rowformat = Number(rowdataRange);
  var row = rowformat.toFixed(0);

  var pasteSheet = sourcess.getSheetByName('WHERE DATA ENDS UP');  // Data is to be pasted - change to your actual sheet name
  var pasteColumn = pasteSheet.getRange(12,12).getDataRegion(SpreadsheetApp.Dimension.COLUMNS).getLastColumn()+1;
  var column = pasteColumn.toFixed(0); // Column that is free for this weeks data

  var pasteRange = pasteSheet.getRange(row,column,1,1);

 Logger.log(pasteRange);

//  pasteRange.setValue(dataValue);

  }};

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

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

Причина, по которой вы получаете ошибку, возможно, состоит в том, что данные в столбце 4 вашего исходного листа не числового формата? Либо измените свои данные, либо измените следующую строку на столбец, содержащий числовые значения c.

var rowdataRange = sourceSheet.getRange(i+2,4).getValue();

Этот сценарий плохо написан для данного конкретного использования.

0 голосов
/ 17 апреля 2020

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

При использовании следующей команды Logger.log(pasteSheet.getLastColumn()); возвращаемое число равно 3753: это означает, что это следующий доступный столбец, в который будут вставлены ваши данные.

Полученное вами сообщение об ошибке связано с тем, что диапазон был неправильным, и вы передавали неверные значения для доступа к нему Вероятнее всего, из-за значений, указанных выше.

Более того, после очистки всех ненужных данных вы можете использовать следующий скрипт:

Фрагмент

function weeklyData() {
    var spreadsheet = SpreadsheetApp.openById("ID_OF_THE_SPREADSHEET");
    var sourceSheet = spreadsheet.getSheetByName("Measures & Answers");
    var pasteSheet = spreadsheet.getSheetByName("WHERE DATA ENDS UP");

    var valsToCopy = sourceSheet.getRange(2, 3, sourceSheet.getLastRow(), 1).getValues();
    var rowsAt = sourceSheet.getRange(2, 4, sourceSheet.getLastRow(), 1).getValues();
    var column = pasteSheet.getRange(12,12).getDataRegion(SpreadsheetApp.Dimension.COLUMNS).getLastColumn()+1;  

    for (var i = 0; i < valsToCopy.length; i++) 
        if (rowsAt[i][0] != "") 
            pasteSheet.getRange(parseInt(rowsAt[i][0]), parseInt(column)).setValue(valsToCopy[i][0].toString());

}

Объяснение

Приведенный выше скрипт собирает все данные, которые необходимо скопировать, а также строки, связанные с ним. Чтобы убедиться, что вы не используете неподходящие значения для диапазонов, было установлено условие if, чтобы убедиться, что значение не равно empty.

Ссылка

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