Javascript 我需要帮助开发一个谷歌脚本生成一个产品列表

Javascript 我需要帮助开发一个谷歌脚本生成一个产品列表,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我对谷歌脚本非常熟悉,但我正在尝试构建一个项目,该项目将: 在工作表a(图像中的粉红色单元格)的列表上获取2个输入(名称和项目#),并将它们复制/粘贴到工作表顶部的特定2单元格范围(图像中的绿色单元格)。这些值在作为我的产品模板的工作表的前4行(蓝色单元格)上生成输出。我确实为那些细胞创建了命名区域。我想。。。 图片-> 在工作表B顶部插入4行。*这是的图像 从图纸A上的前4行复制这些新值,并将它们粘贴到图纸B上新插入的行中 重复 我一直在尝试自己构建函数,但我非常缺乏经验。我真的只是想学习,所

我对谷歌脚本非常熟悉,但我正在尝试构建一个项目,该项目将:

  • 在工作表a(图像中的粉红色单元格)的列表上获取2个输入(名称和项目#),并将它们复制/粘贴到工作表顶部的特定2单元格范围(图像中的绿色单元格)。这些值在作为我的产品模板的工作表的前4行(蓝色单元格)上生成输出。我确实为那些细胞创建了命名区域。我想。。。 图片->
  • 在工作表B顶部插入4行。*这是的图像

  • 从图纸A上的前4行复制这些新值,并将它们粘贴到图纸B上新插入的行中

  • 重复
  • 我一直在尝试自己构建函数,但我非常缺乏经验。我真的只是想学习,所以如果你能帮助我理解任何能让我更接近这项工作的东西,我会非常感激

    以下是我目前的代码:

    函数onOpen(){ var电子表格=SpreadsheetApp.getActive(); 变量菜单项=[ {name:'Prepare sheet…',functionName:'prepareSheet_u33;}, {name:'生成产品…',functionName:'生成产品} ]; 电子表格。添加菜单(“方向”,菜单项); } 函数generateProduct_389;(){ 变量i=0 var generatorCells=nameCell+“:”+numberCell; var nameCell=新字符串(“A”+i); var numberCell=新字符串(“B”+i); var generatorCells=nameCell+“:”+numberCell; var nameCellResults=新字符串(“A”+(i*5)); var numbercelresults=新字符串(“B”+(i*5)); 对于(变量i=11;单元格_EMPTY=false;i++){ spreadsheet.getRange(generatorCells).copyTo(getRange(productGenCells)),SpreadsheetApp.copypesttype.PASTE_值,false; spreadsheet.getRange('2:5').copyTo(sheet.getRange(genResults),{contentsOnly:true},spreadsheetApp.copypestype.PASTE_值,true); 电子表格.setActiveSheet(电子表格.getSheetByName('Results'),true); 电子表格.getActiveSheet().insertRowsBefore(电子表格.getActiveRange().getRow(),4); 电子表格.getActiveRange().offset(0,0,1,电子表格.getActiveRange().getNumColumns()).activate(); spreadsheet.getRange('productGen!2:5').copyTo(spreadsheet.getActiveRange(),SpreadsheetApp.CopyPasteType.PASTE_值,false); 电子表格.setActiveSheet(电子表格.getSheetByName('productGen'),true); 电子表格.getRange('2:2').activate(); } };
    如果您通过(或类似方式)运行代码,它将发现许多问题。下面是一些更正的代码。但最突出的问题是for循环中的条件测试

    1) 首先,使用单=(赋值)运算符代替双==(测试) 2) 循环中未设置假定为单元格_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();
            }
    }
    

    你有什么问题?