2017-08-04 12 views

答えて

1

あなたは、2つのオプションを持っている、と私はそれらの枯れのファンですかどうかはわからないが、それは私の意見です。あなたは違った感じがあります

オプション1:実行する機能を強制します。セル内

機能、それが変更されたセルを参照しない限り実行されません。シート名を変更してもスプレッドシート内の機能は起動しません。しかし、我々は、それまでの範囲を渡すと、いつでもその範囲の変更の項目は、機能がトリガすることにより、実行する機能を強制することができます。

function mySheetName() { 
    var key = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); 
    return key; 
} 

とセルの場所で

は、次のとおりです:

あなたは名を取得するカスタム関数を作成するには、以下のスクリプトを使用することができます今すぐ

=mySheetName(A1:Z) 

場合、セル内の任意の値渡された範囲が変更されると、スクリプトが実行されます。これは、スクリプトを実行するために、第2を取り、セル内の任意の値はので、これは非常に迅速に迷惑になる可能性が変更されるたびにメッセージを設定します。すでに述べたように、それはまた、それがトリガーさせる範囲の変更を必要とするので、かなり静的なファイルに役立つ本物ではありません。

オプション2:実行時間は、上記のオプションよりも良い感じ、そしてこれは、スプレッドシートのセルに変更した値に依存しない、それは強制的にので、私はこれが好きではありませんがonChangeイベントに

を使用します名前がどこに行くか。ユーティリティシートを使用して、希望する場合はさまざまなシートでこの位置を定義できます。以下は基本的なアイデアです。このオプションが好きな人は、まずあなたを始めましょう。

シート名が変更されると、OnChangeイベントが発生します。あなたは、下記より洗練されたコードは、エラーをチェックするために作るなど与えられたシート、基本コードにのみ仕事にシートIDを確認することができ、しかし、次のとおりです。

あなたは、コードを保存した後
function setSheetName(e) { 
    var key = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); 
    SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('K1').setValue(key); 
} 

スクリプトエディタは、現在のプロジェクトの変更時トリガーをこの機能に設定します。どの変更イベントでもシート名がセルK1に書き込まれます。トリガーを設定するには、を選択します。現在のプロジェクトのトリガーは、メニューになります。

関連する問題