#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. Спасибо большое. Это то, что мне нужно 🙂 🙂 Вы спасли меня)))))) Большое вам спасибо )