Javascript GoogleSheets-从未知长度的列在新的电子表格中创建新的工作表

Javascript GoogleSheets-从未知长度的列在新的电子表格中创建新的工作表,javascript,google-apps-script,google-sheets-api,Javascript,Google Apps Script,Google Sheets Api,我是JavaScript新手,我想为工作做一点自动化,想知道是否能得到一些帮助。电子表格A是一个模板,可以包含未知数量的单元格,其中B列中的数据从B2开始。当我点击我创建的附加菜单按钮时,会创建一个新的电子表格(电子表格B),但我想根据电子表格a到电子表格B中B列中的数据,用标题填充新的表格 我知道这必须放在一个While循环中,但是使用电子表格会让我有点困惑 谢谢 从电子表格A复制这些单元格: 基于电子表格B中的电子表格A单元格创建新图纸: 到目前为止,我的情况如下: function p

我是JavaScript新手,我想为工作做一点自动化,想知道是否能得到一些帮助。电子表格A是一个模板,可以包含未知数量的单元格,其中B列中的数据从B2开始。当我点击我创建的附加菜单按钮时,会创建一个新的电子表格(电子表格B),但我想根据电子表格a到电子表格B中B列中的数据,用标题填充新的表格

我知道这必须放在一个While循环中,但是使用电子表格会让我有点困惑

谢谢

从电子表格A复制这些单元格:

基于电子表格B中的电子表格A单元格创建新图纸:

到目前为止,我的情况如下:

function pickListCreation(){
  //This line creates Spreadsheet B (New Pick List)
  var newPickList = SpreadsheetApp.create("New Pick List");
       Logger.log(newPickList.getUrl());
  var app = SpreadsheetApp;
  var activeSheet = app.getActiveSpreadsheet();
  //Data in Column B from Spreadsheet A will be Room Numbers.  Room Number variable declared
  var roomNumber = activeSheet.getRange(2,2);
  //While loop that will run as long as there is data in the cell of Column B in Spreadsheet A
  while (roomNumber.isBlank() !== false){
  //Variable newPickSheet that is set to the value of the current cell  
    var newPickSheet = roomNumber.getValue();
  //Insert new sheet with newPickSheet as the title in newPickList (Spreadsheet B)
    newPickList.insertSheet(newPickSheet);
  //Move down one cell in the column
    roomNumber = activeSheet.getRange(i+1, 2);
  }

}

以下是我如何从Sheet1中的数据创建新图纸:

function addSheets() {
    var curTabNameArray = [];
    var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var theRowCount = activeSpreadsheet.getSheetByName("Sheet1").getDataRange().getNumRows();
    var myRange = activeSpreadsheet.getSheetByName("Sheet1").getRange(2, 2, theRowCount - 1); // we start on 2nd row
    var newProposedSheetNamesArray = myRange.getValues();

    var oldTabsObjArray = activeSpreadsheet.getSheets();
    var oldTabsCount = oldTabsObjArray.length;

    for (var a = 0; a < oldTabsCount; a++) { // push names of old existing sheets into array
        curTabNameArray.push(oldTabsObjArray[a].getName());
    }

    for (var myCounter = 0; myCounter < theRowCount - 1; myCounter++) {
        var curProposedNewSheetName = newProposedSheetNamesArray[myCounter];
        var curProposedNewSheetNameString = curProposedNewSheetName[0];
        var newIndex = curTabNameArray.indexOf(curProposedNewSheetNameString);
        if (newIndex > -1) {
            Logger.log("curProposedNewSheetName already exists");
        } else {
            Logger.log("adding sheet " + curProposedNewSheetNameString);
            activeSpreadsheet.insertSheet(curProposedNewSheetNameString, activeSpreadsheet.getSheets().length);
        }
    }
}
函数addSheets(){
var curTabNameArray=[];
var activeSpreadsheet=SpreadsheetApp.getActiveSpreadsheet();
var theRowCount=activeSpreadsheet.getSheetByName(“Sheet1”).getDataRange().getNumRows();
var myRange=activeSpreadsheet.getSheetByName(“Sheet1”).getRange(2,2,theRowCount-1);//我们从第二行开始
var newProposedSheetNamesArray=myRange.getValues();
var oldTabsObjArray=activeSpreadsheet.getSheets();
var oldtabscont=oldTabsObjArray.length;
对于(var a=0;a-1){
Logger.log(“curProposedNewSheetName已存在”);
}否则{
Logger.log(“添加工作表”+curProposedNewSheetNameString);
activeSpreadsheet.insertSheet(curProposedNewSheetNameString,activeSpreadsheet.getSheets().length);
}
}
}

您能发布您目前编写的脚本吗?此外,您还需要改进您的问题。这里是一个关于如何写一个好问题的参考,我编辑了我的帖子。很抱歉所有的评论,但我想尽量详细。我在哪里声明了
I
?你可能想花点时间学习如何写作。谢谢库珀,完全忘记了。我已经掌握了如何编写for循环的基本知识,但我认为,由于B列的长度将根据用户正在处理的内容而不确定,因此最好运行while循环,直到列中有一个空白行表示结束。然而,如果有更简单的方法,我愿意接受。