Импорт таблиц Google

#google-apps-script #import #google-sheets

#google-приложения-скрипт #импорт #google-sheets

Вопрос:

Поскольку формула importrange не справляется, я использую этот скрипт, но это полностью зависит от количества строк в основном документе (то есть я не могу выполнить импорт, пока мое количество строк не совпадет). Файл, из которого берутся данные, является динамическим, и строки меняются каждый раз, когда вам приходится вручную изменять количество строк. Подскажите, как импортировать данные, независимо от количества строк? И как импортировать не только в ячейку A1? И, например, в ячейке 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. Привет, разрешены только вопросы на английском языке, вы должны попытаться перевести на английский.

2. Ох, извините…готово)

Ответ №1:

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

 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 amp;amp; tid amp;amp; sname amp;amp; tname amp;amp; row amp;amp; col amp;amp; rows amp;amp; 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);
}
  

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

1. Спасибо большое. Это то, что мне нужно 🙂 🙂 Вы спасли меня)))))) Большое вам спасибо )