2017-12-14 8 views
-2

私はJavaScriptを初めて使いました。私は仕事のために少し自動化したいと思います。スプレッドシートAは、B2から始まる列Bのデータを持つ未知数のセルを持つことができるテンプレートです。作成したアドオンメニューボタンをクリックすると、新しいスプレッドシート(​​スプレッドシートB)が作成されますが、スプレッドシートAからスプレッドシートBの列Bのデータに基づくタイトルが新しいシートに挿入されますGoogleシート - 不明な長さの列から新しいスプレッドシートで新しいシートを作成

これはWhileループ内に配置する必要があることを理解していますが、スプレッドシートで作業すると少し混乱することがあります。

ありがとうございます!スプレッドシートAから

コピーこれらの細胞:

Copy these Cells from Spreadsheet A

スプレッドシートBにスプレッドシートAのセルに基づいて新しいシートを作成します。

Create new sheets based on Spreadsheet A cells in Spreadsheet B

はこれまでのところ、これがあると私の持っているもの:

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); 
    } 

} 
+0

をあなたがこれまでに書いたスクリプトを投稿することができますか? –

+0

また、質問を改善する必要があります。ここでは、良い質問を書く方法についての参考書です。https://stackoverflow.com/help/how-to-ask –

+0

私の投稿を編集しました。申し訳ありませんが、すべてのコメントがありましたが、私は可能な限り詳細にしようとしたかったのです。 – Adam

答えて

0

は、ここで私は、シート1のデータから新しいシートを作成します方法は次のとおりです。

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); 
     } 
    } 
} 
関連する問題