我通过在Google表格中记录宏来编写一些代码。它将数据复制并粘贴到列中。但这是一种笨拙的复制方式,我想做得更好。
我目前正在使用此代码。
function import2() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Road MT'),
true);
spreadsheet.getRange('C2').activate();
spreadsheet.getRange('Imported!A2:A').copyTo(spreadsheet.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
我也使用了类似于下面的代码,但是此代码的问题是,如果行实际上不存在,则会引发错误。它不会创建新的行来填充数据。
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('\'Round Up\'!F:F').activate();
spreadsheet.getActiveRangeList().setNumberFormat('@')
var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
range.getRange("\'Road MT\'!AF2").setFormula('=\'Round Up\'!F2');
var lr = range.getLastRow();
var fillDownRange = range.getRange(2, 32, lr-1);
range.getRange("\'Road MT\'!AF2").copyTo(fillDownRange);
答案 0 :(得分:0)
我使用脚本来做类似的事情。它不会按照自己的方式创建行,但是如果您知道粘贴的范围,则可以将要复制的数据范围设置为尚不存在的行,它将使它们成为行。
var spreadsheet = SpreadsheetApp.getActive();
//this get what you want to copy and it's length
var sheetToCopy = spreadsheet.getSheetByName(<name>); //or similar
var rangeToCopy = sheetToCopy.getRange(<yourRange>)
var dataToCopy = rangeToCopy.getValues()
var nRowsToCopy = dataToCopy.length // or rangeToCopy.getLastRow()
var nColsToCopy = rangeToCopy.getLastColumn() //because dataToCopy[0].lenght might vary from dataToCopy[5].lenght
//this get get where you wanna copy it and set the proper range so it can be pasted
var fillDownSheet = spreadsheet.getSheetByName(<name>); //or similar
var fillDownRow = fillDownSheet.getLastRow()+1;
var fillDownRange = fillDownSheet.getRange(fillDownRow, <yourColIndex>, nRowsToCopy, nColsToCopy);
//this paste your data
fillDownRange.setValues(dataToCopy);
或者,您也可以像这样使用copyToDestination()method:
var spreadsheet = SpreadsheetApp.getActive();
var sheetToCopy = spreadsheet.getSheetByName(<name>); //or similar
var rangeToCopy = sheetToCopy.getDataRange()
var nRowsToCopy = rangeToCopy.getLastRow()
var nColsToCopy = rangeToCopy.getLastColumn()
var fillDownSheet = spreadsheet.getSheetByName(<name>); //or similar
var fillDownRow = fillDownSheet.getLastRow();
var fillDownRange = fillDownSheet.getRange(fillDownRow, 1);
var fillDownGridID = fillDownRange.getGridId();
rangeToCopy.copyValuesToRange(fillDownGridID, 1, nRowsToCopy, fillDownRow, (fillDownRow+nColsToCopy))
但是您的工作表上至少需要有一个空行,否则它将被覆盖。