Диапазоны строк в скрипте Google Apps - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть лист, из которого мне нужно получить значения и установить его на новом листе, одно из этих значений требует от меня среза строкового значения с индексами 20,26. Я могу добиться этого, используя .getValue (). Slice (20,26) и .setValue (). Тем не менее, одни и те же данные установлены во всех строках, что и следовало ожидать, так как я получаю только одну ячейку данных. Чтобы решить эту проблему, я попытался для l oop, что не удалось.

Когда я пытаюсь .getValues ​​(). Slice (20,26), он возвращает пустой массив, который выдает следующую ошибку: Количество строк в данные не соответствуют количеству строк в диапазоне. У данных есть 0, но диапазон составляет 20.

Мой код указан ниже, и я приветствую любые рекомендации.

function pj() {
 // Get Active spreadsheet.
   var sheet = SpreadsheetApp.getActiveSpreadsheet();
 //Get last row processed and update
   var startRow =sheet.getSheetByName("Index").getRange("A1").getValue();
   startRow++;
// Get payments sheet.
var paymentSheet = sheet.getSheetByName("Payments");
var clientSheet = sheet.getSheetByName("Client Details");
var lastRow = paymentSheet.getLastRow();
//Inputs
var firstName = paymentSheet.getRange(startRow, 3, (lastRow-startRow+1), 1).getValues();
var lastName= paymentSheet.getRange(startRow, 4, (lastRow-startRow+1), 1).getValues();
var paymentId = paymentSheet.getRange(startRow, 14, (lastRow-startRow+1), 1).getValues().slice(20,26);
}

//Outputs
clientSheet.getRange(2,1,(lastRow-startRow+1),1).setValues(firstName);
clientSheet.getRange(2,8, (lastRow-startRow+1),1).setValues(paymentId);



//Update the last row processed
sheet.getSheetByName('Index').getRange("A1").setValue(lastRow);
}  

Пожалуйста, посмотрите изображение листа, с которым я работаю, как вы увидите столбец N содержит идентификатор платежа, который содержит уникальный идентификатор клиента, который мне нужно извлечь, чтобы загрузить эти данные в Salesforce. Кажется, проблема в том, что Logger.log правильно сообщает о строке, когда она проходит через массив, но сообщает о длине как 1. Я пытался изменить формат этого столбца различными способами, Text, Number et c, но это, кажется, не имеет никакого значения к сообщенной длине. Я предполагаю, что именно поэтому функция разделения не работает, но я не уверен, почему это происходит? Лист

1 Ответ

1 голос
/ 12 февраля 2020

Я многое догадался, но это должно выглядеть примерно так:

function pj() {
  var ss=SpreadsheetApp.getActive();
  var isht=ss.getSheetByName("Index");
  var startRow=isht.getRange("A1").getValue()+1;
  var psht=ss.getSheetByName("Payments");
  var csht=ss.getSheetByName("Client Details");
  var lastRow=psht.getLastRow();
  var prg=psht.getRange(startRow,1,psht.getLastRow()-startRow+1,14);
  var pvals=prg.getValues();
  pvals.forEach(function(r,i){
    csht.getRange(i+2,1).setValue(r[2]);
    csht.getRange(i+2,2).setValue(r[3]);
    csht.getRange(i+2,8).setValue(r[13].slice(20,26));
  });
  isht.getRange("A1").setValue(csht.getLastRow());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...