2017-04-24 13 views
0

このコードの最後の行については助けがありましたが、スプレッドシートの1枚のシートに対しては完全に機能しますが、ターゲットスプレッドシート内のシート他の4枚のシートの同じ範囲を対象シートの同じ名前の相手にどのように取得できますか?そこで以下では、各シートを対応する名前を付けてコピーしてみましたが、以下のようにコードを設定しましたが、最初のシートをインポートするだけで、コード全体に対して元のスプレッドシートIDを一度入力する必要があります各シートセクションの?作業シートからアーカイブシートへの複数シートのコピー

function ImportDataRange() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('AM trip'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('AM trip'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('PM trip'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('PM trip'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('Pool/Beach'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('Pool/Beach'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('Night Dive'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('1Z0zU2oGktLPB-QitYMm9XtOGN4Rd-Z-UJJomGX4NIO0'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('Night Dive'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 
} 

ありがとうございました。とても有難い。

答えて

0

ループを使用してコードを簡略化することができます。

あなたは5枚ありますが、コードサンプルには4枚しかありません。別のシート名をvar sheetNamesに追加してください。

function onOpen() { // This function adds a custom menu to the spreadsheet (Backup to archive) so you can run the script from there. 

var ui = SpreadsheetApp.getUi(); 

    ui.createMenu('Backup to archive') 
    .addItem('Backup', 'dataBackup') 
    .addToUi(); 
} 

function dataBackup() { 

    var inputSS = SpreadsheetApp.openById('1wglM4-5jx873vwtFRPVgC1qk27JjrsYjDwp0fNpl5Xg'); // The file ID of the Input sheet 
    var archiveSS = SpreadsheetApp.openById('146WU8RghfFqlCpCSX7n6kBAKOyxcpVKt14yhVfvYz-g'); // The file ID of the archive sheet 

    // The names of the sheets to be copied. 
    // NOTE: These names must match the names of the sheets in BOTH spreadsheets i.e. the same case the spelling and the same spaces. 
    var sheetNames = ['AM trip', 'PM trip', 'Pool/Beach', 'Night Dive']; 

    for (var i = 0; i < sheetNames.length; i++) { // Loop to each sheet listed in 'var sheetNames' and copy the data. 

     var inputSheet = inputSS.getSheetByName(sheetNames[i]); 
     var archiveSheet = archiveSS.getSheetByName(sheetNames[i]); 

     var data = inputSheet.getRange('B7:U38').getValues(); 

     archiveSheet.getRange(archiveSheet.getLastRow() + 1, 2, data.length, data[0].length).setValues(data); 
    } 
} 
+0

ありがとうございました。私はリストにあるように、今はわずか4ページしか変更していません。私はスクリプトを実行しますが、最初のページのAM Tripのみがコピーされます。他のページはコピーされません。チェックするためにいくつかのデータを貼り付けています。また、 "var i = 0 ......"という行を説明する場所に私を説明したり指摘したりすることができますか?ありがとう私は検索しようとしましたが、説明を見つけることができません。 – Paul

+0

@Paul、なぜスクリプトが機能していないのかわかりません。シート名が一致しない可能性がありますか?これらの2枚を見てください。入力シートには、スクリプトとそれを呼び出すためのカスタムメニューが含まれています。 [入力シート](http://gg.gg/4iork)と[アーカイブシート](http://gg.gg/4iorj)。 'var i = 0'はforループ[https://www.w3schools.com/js/js_loop_for.asp]のカウンタです。 IMO、このスクリプトはあなたが必要とするものに理想的ではありません。私に連絡する:jamesd at nairongschool.com –

関連する問題