1

状況:

10 個のワークシートと 15 人のユーザーがログインして変更するスプレッドシートがあります。他のスプレッドシートから6枚だけコピーしたい。

必要なスクリプト機能:

スクリプトは、特定の別のスプレッドシートにシートをコピーする必要があります。

1) ソース = XXXXXX ソースからシート 1,2,3,4,5,6,7,8 のみをターゲットにコピーしたい。ターゲット = YYYYY

注: ターゲットには既にシート 1、2、3、4、5、6、7、8 があります。レポートを作成するために使用するため、そのターゲット スプレッドシートを更新する必要があります。このレポートは機密情報であるため、サースを使用することはできません。

2) スクリプトはターゲットから実行する必要があります。

問題:

私は多くのフォーラムを読みましたが、誰もが「シートを別のシートにコピーする方法」に関する一般的なスクリプトを提供しています。これらのスクリプトはすべて非常に複雑で、私はこれに慣れていません。

テストケース:

なし

あるスプレッドシートから別のスプレッドシートへのシートの単純なコピーだと思いますが、これをワンショットで行う必要があります。実際には手動で行っていますが、システムの問題でシート名が XXXXX のコピーに変更されていますが、レポートは特定の名前、それが私がこれを可能にする必要がある理由です。このスクリプトは多くの人に役立つと思います。

前もって感謝します。

編集:2013年6月14日

やあ、

このスクリプトがより効果的に機能するように調整する方法を教えてください。

    function UpdateData() {
     var source = SpreadsheetApp.openById('YYYYYY');
     var sheet8 = source.getSheets()[8];
     var sheet7 = source.getSheets()[7];
     var sheet6 = source.getSheets()[6];
     var sheet5 = source.getSheets()[5];
     var sheet4 = source.getSheets()[4];
     var sheet3 = source.getSheets()[3];
     var sheet2 = source.getSheets()[2];
     var sheet1 = source.getSheets()[1];

     var destination = SpreadsheetApp.openById('ZZZZZZ');

     sheet8.copyTo(destination).setName('Sheet8');
     sheet7.copyTo(destination).setName('Sheet7');
     Utilities.sleep(100);
     sheet6.copyTo(destination).setName('Sheet6');
     sheet5.copyTo(destination).setName('Sheet5');
     Utilities.sleep(100);
     sheet4.copyTo(destination).setName('Shee4');
     sheet3.copyTo(destination).setName('Shee3');
     Utilities.sleep(100);
     sheet2.copyTo(destination).setName('Shee2');
     sheet1.copyTo(destination).setName('Shee1');

      SpreadsheetApp.flush();
    }
4

1 に答える 1

9

ドキュメントを調べてください: copyTo(spreadsheet)、説明から:

シートを別のスプレッドシートにコピーします。宛先スプレッドシートをソースにすることができます。新しいスプレッドシートの名前は「[元のスプレッドシート名] のコピー」になります。

メソッドはコピーされたシートを返すので、名前を変更できます。

sourceSheet.copyTo(targetSpreadSheet).setName('somename');

JSでループを書く方法を知っていることを願っています...

于 2013-06-14T17:13:18.467 に答える