2017-07-11 13 views
1

Google Apps Scriptは新しく、目標を達成するのに問題があります。ユーザーが選択したターゲットスプレッドシートにシートをコピーしてデータをコピーする方法

  1. がで
  2. タイプ(それぞれの名前は、それに関連付けられたユニークな/個別 GoogleのワークブックのURLを持っている)ドロップダウンから名前を選択します。

    私は、ユーザーがすることを可能にするGoogleスプレッドシートワークブックを持っていますスプレッドシート名
  3. 押して「シートを押し、」ボタン、ユーザーがボタンを押したら

希望、私は次のことを達成しようとしている:

  1. は、シート「テンプレート - 変更しないでください」重複すでにターゲットワークブック上に存在する(選択された名前に関連付けられたURL)
  2. 希望のスプレッドシート名に重複シートの名前を変更コピー範囲A7 :オリジナルのワークブックのシート「トラッカー」の範囲A7にD150:ターゲット・ワークブックのD150、新しく作成されたシート

は、元のシートは、ユーザが前にスクリプトを実行するワークブックの接続を認可持つように設定されています。

は、ここに私のコードです:

function cloneGoogleSheet() { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var name = sheet.getRange("B10").getValue(); 
    var url = sheet.getRange("f5").getValue();  
    var tss = SpreadsheetApp.openByUrl(url); 


    tss.setActiveSheet(tss.getSheetByName('Template - Do Not Modify')); 
    tss.duplicateActiveSheet(); 

    var activesheet = tss.getActiveSheet(); 
    activesheet.setName(name); 

} 

私の問題は、次のとおりです。

  1. ActiveSheetsを利用すると、このすべてを行うための安全な方法で、より良い方法があることのようにそれはいないようです。

  2. URL変数を使用しようとすると(スクリプトがハードコードされたURL値で正常に動作します)、無効な引数を取得します。URLエラー。セルF5は、ドロップダウンから選択された名前に基づいて新しいURLを更新します。ユニークなURLを持つ名前を参照するルックアップを使用します。

    =ルックアップ(B4、 {P71、P72、P73、P74、P75、 P76、P77}、 {Q71、Q72、Q73、Q74、Q75、Q76、Q77} )

  3. 私はこれらすべてのActiveSheet変数を使用しているという事実を考えると、私は戻って取得するかどうかはわかりません範囲をコピーする私の元のシート。

私はこれを行う正しい方法を教えてくれてありがとうと思います。ありがとう!

答えて

0

「getSheetByName」を使用してみましたか?

0

てみDuplicate a Sheet in Google SpreadsheetsにArmit Agarwal氏のチュートリアル:

function cloneGoogleSheet() { 

    var name = "labnol"; 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Template').copyTo(ss); 

    /* Before cloning the sheet, delete any previous copy */ 
    var old = ss.getSheetByName(name); 
    if (old) ss.deleteSheet(old); // or old.setName(new Name); 

    SpreadsheetApp.flush(); // Utilities.sleep(2000); 
    sheet.setName(company); 

    /* Make the new sheet active */ 
    ss.setActiveSheet(sheet); 

} 
関連する問題