Код для ввода информации, которую я вводю в один файл на листах, и делает его массивом, чтобы я мог перенести его на другой лист (другой идентификатор) - PullRequest
0 голосов
/ 18 марта 2020

Я новичок в Javascript и Google Script, поэтому, пожалуйста, потерпите меня. Ниже приведен код, который я написал, но он не передает информацию.

В моем коде я пытаюсь поместить информацию с одного листа в массив, а затем перенести ее в другую электронную таблицу с листами для вкладки, содержащие изменения, внесенные в указанный месяц c. Мне не нужно менять какую-либо информацию, мне просто нужно ее переместить.

function infoTransfer() 
{
  var actveSheet = SpreadsheetApp.getActiveSpreadsheet();
  var byName = actveSheet.getSheetByName("New Item Input Sheet");
  var infoRange = byName.getDataRange();
  var valueRange = infoRange.getValues();
  var infoTable = [];                                                        
  for(var i = 1; i < infoRange.getNumRows(); i++)
  {
   var e = [];
   for(var j = 2; j < infoRange.getRow(i).getNumCells(); j++)
    e.push(infoRange.getCell(i,j).editAsText().getText());
   }
   infoTable.push(e);

  var otherSheet = SpreadsheetApp.openById('1QYEwvbPWIZ1sVuOhJ5PZK2KjCQ2waUIBuVX169L-SZU');
  var sh = otherSheet.getSheetId('1505823542')

  sh.getRange(2,1,infoTable.length,infoTable[0].length).setValues(infoTable);  
}

1 Ответ

0 голосов
/ 18 марта 2020

Ответ:

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

Код:

function copyData() {
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
  var byName = activeSheet.getSheetByName("New Item Input Sheet");
  var noOfColumns = byName.getDataRange().getNumColumns();
  var noOfRows = byName.getDataRange().getNumRows();
  var arrayOfColumns = [];

  for (var i = 0; i < noOfColumns; i++) {
    arrayOfColumns[i] = byName.getRange(1, i + 1, noOfRows, 1);
  }
  var destinationSheet = SpreadsheetApp.openById('destination-spreadsheet-id');
  var sheet = destinationSheet.getSheetByName('sheet-name');

  for (var i = 0; i < noOfColumns; i++) {
    sheet.getRange(1, i + 1, noOfRows, 1).setValues(arrayOfColumns[i].getValues());
  }
}

Я надеюсь, что это полезно для вас!

Ссылки:

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