Проблемы с копированием данных на другой лист

#google-apps-script #google-sheets

Вопрос:

У меня есть лист с данными, и я хочу скопировать значения с этого листа на основной лист.

Данные с листа импорта получены несколькими массивами, поэтому, когда я копирую их на основной лист, они копируются неправильно.

Как я могу скопировать только конечный результат этого листа? (только «видимая» часть)

 function copyTo() {
  var source = SpreadsheetApp.openById("xxxxxxxxxxxxx"),
      sheet = source.getSheetByName('ImportJSON'),
      destination = SpreadsheetApp.getActiveSpreadsheet(),
      destSheet = destination.getSheetByName('universe'),
      copydSheet = sheet.copyTo(destination);
  copydSheet.getDataRange().copyTo(destSheet.getDataRange(),{contentsOnly:true});
  destination.deleteSheet(copydSheet);
}
 

Оригинальный лист

Результат после копирования

Ответ №1:

Попробуйте использовать приведенный ниже сценарий:

 function CopyDataToNewFile() {
  var sss = SpreadsheetApp.openById('SOURCE'); // sss = source spreadsheet
  var ss = sss.getSheetByName('SOURCE_SHEET'); // ss = source sheet
  //Get full range of data
  var SRange = ss.getDataRange();
  //get A1 notation identifying the range
  var A1Range = SRange.getA1Notation();
  //get the data values in range
  var SData = SRange.getValues();

  var tss = SpreadsheetApp.openById('TARGET'); // tss = target spreadsheet
  var ts = tss.getSheetByName('TARGET_SHEET'); // ts = target sheet
  //set the target range to the values of the source data
  ts.getRange(A1Range).setValues(SData);

} 
 

Просто замените SOURCE , SOURCE_SHEET , TARGET , и TARGET_SHEET на то, что соответствует вашим потребностям.

Комментарии:

1. Есть ошибка» Ошибка типа: copydSheet.getDataRange(…).getValues(…).CopyTo не является функцией». Спасибо за помощь.

2. Я отредактировал свой ответ, надеюсь, теперь он должен сработать.

3. Это тоже не работает. Может быть, это потому, что я копирую лист, а не диапазон.

4. Не беспокойтесь, я рад, что смог помочь.