1

メニュー項目が選択されているときに、スプレッドシート上の開いているシートの下部に特定のデータが呼び出されて重複する機能をコーディングしようとしています。例では、シートごとに行があるので、rowNumberをduplicateLastRow関数に渡そうとしています。現在、この値はnull値を返しています。getRangeのヌル値を返すGoogleシート

私のメニューには〜80個のアイテムがあり、80個の関数定義があり、500行のコードがコマンドにコピーして貼り付けるのに過度であると思うので、これはさまざまな方法があります。コードは以下に含まれており、リンクされたシートはここに公開されています:https://docs.google.com/spreadsheets/d/1yOJ8VdhbkbC9vw5or4geV-mv-PCk-WA86L8-F7-WGM8/edit?usp=sharing スクリプトエディタのプロジェクトはcopyRowFromOriginToDestinationと呼ばれ、私が取り組んでいるスクリプトはtestFileBlargです - Code2スクリプトは動作していますが、ダイアログのプロンプトと行を削除します。

多くの先行き!

function onOpen() { 
    var ui = SpreadsheetApp.getUi(); 

    ui.createMenu('testRow') 
    .addSubMenu(ui.createMenu('Life Sciences') 
    .addSubMenu(ui.createMenu('NRG') 
    .addItem('Highlight/Alamy', 'callHANRG') 
    )) 
    .addToUi(); 

} 

function callHANRG(rowNumber){ 
    duplicateLastRow(3); 
} 

function duplicateLastRow(rowNumber){ 

    var originSheetName = "Example Rows"; 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); // This is an object that represents the open spreadsheet 
    var originSheet = ss.getSheetByName(originSheetName); // This object represents the sheet we are copying FROM 
    var destinationSheet = ss.getActiveSheet() // getSheetByName(destinationSheetName); // This object represents the sheet we are copying TO 

    destinationSheet.insertRowAfter(destinationSheet.getLastRow()); // This adds a row to the end of the destination sheet so it doesn't fill up! 

    var originRow = originSheet.getRange(rowNumber, 1, 1, originSheet.getLastColumn()); // This object represents the row to be copied 
    var destinationRow = destinationSheet.getRange(destinationSheet.getLastRow()+1, 1); // This object represents the row we are copying to 

    originRow.copyTo(destinationRow); // This actions the copying 
} 
+0

私が理解から、あなたのコードから、あるワークシートのデータを他のワークシートにコピーする関数を書いて、正しいものにしたいのですか? –

+0

ワークシートのデータを生成するより良い方法がない限り、それは私の望むことです - 配列を探していますが、これについてはほとんど分かりません。 –

+0

私の答えを確認してください。 –

答えて

0

ワークシートのデータを他のワークシートにコピーする場合は、以下のコードを参考にしてください。

更新:

例えば、データをコピーするために、共通の機能として、この機能を使用するには - Copy()機能で

function callHANRG(rowNumber){ 
    copy(3, "A2:I20"); 
} 

そしてを、

function Copy(rowNumber, rangeToBeCopied) 
{ 
    var sss = SpreadsheetApp.openById('<SPREADSHEET_ID>'); 
    var ss = sss.getSheetByName('Front'); 
    var range = ss.getRange(rangeToBeCopied); 
    var data = range.getValues(); 

    //If your copying data to different spreadsheet then only use this line or 
    //else use var ts = sss.getSheetByName('frontBackup'); and comment the two lines below. 
    var tss = SpreadsheetApp.openById('<SPREADSHEET_ID>'); 
    var ts = tss.getSheetByName('frontBackup'); 
    ts.getRange(rowNumber, 1, data.length, data[0].length).setValues(data); 
} 
+0

はい、これは私が思っているものと非常によく似ていますか?私の問題は、私はts.getRange(X、1、data.length、data [0] .length).setValues(data);選択されたメニュー項目によって異なります。現在、私は渡されていない変数rowNumberを使用しています。 –

+0

@KateSnowdon udpatedの回答を確認する –

関連する問題