Google脚本-将数据从一个工作簿复制到另一个工作簿-importrange()替代

时间:2019-06-05 15:56:41

标签: google-apps-script

最近,我在各种工作簿上看到了越来越多的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 :(得分:0)

尝试一下:

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);
}