Импорт Google Sheets - PullRequest
0 голосов
/ 08 апреля 2019

Поскольку формула importrange не справляется, я использую этот сценарий, но он полностью зависит от количества строк в первичном документе (то есть я не могу выполнить импорт, пока не совпадет количество строк). Файл, из которого взяты данные, является динамическим, и строки меняются, каждый раз, когда вам нужно вручную изменить количество строк. Подскажите, как импортировать данные независимо от количества строк? А как импортировать не только в ячейку А1? А например в ячейке B2?

 // source document
 var sss = SpreadsheetApp.openById('sId');
 // source sheet
 var ss = sss.getSheetByName('name'); 
 // Get data range
 var SRange = ss.getRange("A:H"); 
 // Copy to cell. In this case (A1)
 var A1Range = SRange.getA1Notation();
 // get data values in range
 var SData = SRange.getValues();
 // Target table. Where to unload
 var tss = SpreadsheetApp.openById('tid'); 
 // Destination sheet. Where to import
 var ts = tss.getSheetByName('name');
 // Clear the range before copying.
   ts.getRange("A:H").clearContent();
 // Copy to cell. In this case (A1)
   ts.getRange(A1Range).setValues(SData);

}

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете попробовать что-то вроде этого:

function copyMyData(sid,tid,sname,tname,row,col,rows,cols) {
  var sid=sid || 'default-sid';
  var tid=tid || 'default-tid';
  var sname=sname || 'Sheet1';
  var tname=tname || 'Sheet2';
  var ss=SpreadsheetApp.openById(sid);
  var sh=ss.getSheetByName(sname);
  var row=row || 1;
  var col=col || 1;
  var rows=rows || sh.getLastRow()-row+1;
  var cols=cols || sh.getLastColumn()-col+1;
  if(sid && tid && sname && tname && row && col && rows && cols) {
    var rg=sh.getRange(row,col,rows,cols); 
    var tss=SpreadsheetApp.openById(tid); 
    var tsh=tss.getSheetByName(tname);
    //tsh.getRange(rg.getA1Notation()).clearContent();
    tsh.clearContents();//you might want to clear the entire sheet
    tsh.getRange(rg.getA1Notation()).setValues(rg.getValues());
  }
}

Я использовал это, чтобы немного его протестировать.

function tstCopyMyData() {
  copyMyData(null,null,null,null,5,3,null,null);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...