javascript - 我需要帮助开发一个谷歌脚本来生成一个产品列表
问题描述
我对谷歌脚本非常熟悉,但我正在尝试构建一个项目,该项目将:
- 在工作表 A(图像中的粉红色单元格)的列表中获取 2 个输入(名称和项目编号),然后将它们复制/粘贴到工作表顶部的特定 2 个单元格范围(图像中的绿色单元格)。这些值在作为我的产品模板的工作表(蓝色单元格)的前 4 行上生成输出。我确实为这些单元格创建了命名范围。我认为... 图片 ->我的“SheetA”图片
在工作表 B 的顶部插入 4 行。 *这是工作表 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();
}
};
解决方案
如果你通过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();
}
}
推荐阅读
- javascript - 如何使用_id检查mLab中是否存在对象?
- r - 在 R 中使用“plot()”时出现乱线
- ajax - 使用ajax更新时无法从summernote获取价值
- python - 将图像划分为块
- javascript - 如果检测到颜色改变,Jquery会立即改变文本的颜色
- python - 如何将硒屏幕截图直接保存/上传到第三方?Discord/Imgur/其他 Python3
- amazon-web-services - AWS ECS DescribeContainerInstances 由于 accountId 不匹配而生成 InvalidParameterException
- sharepoint - Sharepoint 项目多级审批
- laravel - Laravel 与 OR 和 WHERE 从原始查询到 Eloquent
- c# - AES解密的前16个字节是垃圾