Копирование диапазона значений из Google Sheet в другие - PullRequest
3 голосов
/ 06 октября 2019

Я хочу скопировать диапазон значений из одной электронной таблицы в другую (A1: H45). Я попробовал код ниже. Несмотря на копирование значений ячеек A1: H45, копирование данных ячейки A1 на новый лист по всему A1: H45, что означает, что одни и те же данные копируются 45 раз.

function Copy()
{
var sss = SpreadsheetApp.openById('1IK6YsZS3_NNAlFA41d8uKriPzfZs_2Ukyh94eeBFj40'); 
var ss = sss.getSheetByName('CURRENT'); 
var range = ss.getRange('A1:H45'); 
var data = range.getValues();
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var yourNewSheet = activeSpreadsheet.getSheetByName("New sheet");
if (yourNewSheet != null) 
{

    activeSpreadsheet.deleteSheet(yourNewSheet);
}
yourNewSheet = activeSpreadsheet.insertSheet();
yourNewSheet.setName("Name of your new sheet");
yourNewSheet.getRange(yourNewSheet.getLastRow()+1,1,45,8).setValue(data);
}

1 Ответ

6 голосов
/ 06 октября 2019

Попробуйте это -

function Copy()
{
var sss = SpreadsheetApp.openById('1IK6YsZS3_NNAlFA41d8uKriPzfZs_2Ukyh94eeBFj40'); 
var ss = sss.getSheetByName('CURRENT'); 
var range = ss.getRange('A1:H45'); 
var data = range.getValues();
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var yourNewSheet = activeSpreadsheet.getSheetByName("New sheet");
if (yourNewSheet != null) 
{

    activeSpreadsheet.deleteSheet(yourNewSheet);
}
yourNewSheet = activeSpreadsheet.insertSheet();
yourNewSheet.setName("Name of your new sheet");
yourNewSheet.getRange(yourNewSheet.getLastRow()+1,1,45,8).setValues(data);
}

Ваш код идеален. Все, что вам нужно было сделать, это использовать setValues (множественное число) вместо setValue:)

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