Google Script - Копирование данных из одной рабочей книги в другую - importrange () Альтернатива - PullRequest
0 голосов
/ 05 июня 2019

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

function CopyData() {
//Clear DataSheet
  SpreadsheetApp.openById('12ZS...').getSheetByName('DataSheet').getRange('A:C').clearContent();

//Copy new database data
  var SData = SpreadsheetApp.openById('1cnNN...').getSheetByName('QuoteCounts').getRange('M1:O5000').getValues();
  SpreadsheetApp.openById('12ZS...').getSheetByName('DataSheet').getRange('A1:C5000').setValues(SData);
}

1 Ответ

0 голосов
/ 05 июня 2019

Попробуйте:

function CopyData() {
  var ss=SpreadsheetApp.openById('12ZS...')
  ss.getSheetByName('DataSheet').getRange('A:C').clearContent();
  var SData = SpreadsheetApp.openById('1cnNN...').getSheetByName('QuoteCounts').getRange('M1:O5000').getValues();
  ss.getSheetByName('DataSheet').getRange(1,1,SData.length,SData[0].length).setValues(SData);
}

Вы также можете сделать это следующим образом:

function CopyData() {
  var ss=SpreadsheetApp.openById('12ZS...')
  ss.getSheetByName('DataSheet').getRange('A:C').clearContent();
  var sdrg=SpreadsheetApp.openById('1cnNN...').getSheetByName('QuoteCounts').getRange('M1:O5000');
  var SData =sdrg.getValues();
  ss.getSheetByName('DataSheet').getRange(1,1,sdrg.getHeight(),sdrg.getWidth()).setValues(SData);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...