我对Google脚本非常满意,但是我正在尝试构建一个项目,该项目将:
在工作表B的顶部插入4行。*这是Sheet B的图像
从工作表A的前4行复制这些新值,并将它们粘贴到工作表B上新插入的行中。
我一直在尝试自己构建函数,但是我没有经验。我确实只是想学习,所以,如果您能帮助我了解使我更接近完成这项工作的一切,我将不胜感激!
到目前为止,这是我的代码:
function onOpen() {
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [
{name: 'Prepare sheet...', functionName: 'prepareSheet_'},
{name: 'Generate products...', functionName: 'generateProduct_'}
];
spreadsheet.addMenu('Directions', menuItems);
}
function generateProduct_() {
var i = 0
var generatorCells = nameCell + ":" + numberCell;
var nameCell = new String("A"+i);
var numberCell = new String("B"+i);
var generatorCells = nameCell + ":" + numberCell;
var nameCellResults = new String("A"+(i*5));
var numberCellResults = new String("B"+(i*5));
for (var i=11;CELL_EMPTY = false; i++) {
spreadsheet.getRange(generatorCells).copyTo(getRange(productGenCells)), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false;
spreadsheet.getRange('2:5').copyTo(sheet.getRange(genResults),{contentsOnly:true}, spreadsheetApp.CopyPasteType.PASTE_VALUES, true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Results'), true);
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 4);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getRange('productGen!2:5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('productGen'), true);
spreadsheet.getRange('2:2').activate();
}
};
答案 0 :(得分:0)
如果您通过https://jshint.com/(或类似的代码)运行代码,它将遇到很多问题。下面一些更正的代码。但是最明显的问题是for循环中的条件测试。
1)首先,使用单个=(赋值)运算符,而不是双==(测试) 2)循环中未设置应该为CELL_EMPTY测试的值。 3)无论如何这应该是一个while循环。
function onOpen() {
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [
{name: 'Prepare sheet...', functionName: 'prepareSheet_'},
{name: 'Generate products...', functionName: 'generateProduct_'}
];
spreadsheet.addMenu('Directions', menuItems);
}
function generateProduct() {
var i = 0;
var nameCell = "A"+i;
var numberCell = "B"+i;
var generatorCells = nameCell + ":" + numberCell;
var nameCellResults = "A"+(i*5);
var numberCellResults = "B"+(i*5);
for (i=11;CELL_EMPTY == false; i++) {
spreadsheet.getRange(generatorCells.copyTo(getRange(productGenCells)), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('2:5').copyTo(sheet.getRange(genResults),{contentsOnly:true}, spreadsheetApp.CopyPasteType.PASTE_VALUES, true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Results'), true);
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 4);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getRange('productGen!2:5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('productGen'), true);
spreadsheet.getRange('2:2').activate();
}
}