2016-09-01 7 views
0

1つの個人用に1つのタブがあり、各タブの名前は個人に関連しています。このスプレッドシートには、それぞれ100人前後のタブがあります。スプレッドシート内の特定のタブでGoogleスクリプトを実行する

毎月末に、保護されていない範囲の選択肢から前月のデータを消去する必要があります。

現在、私はこれを使用して、各タブでスクリプトを100回実行する必要があります。

function clearData() { 
    // assign this to a button on each sheet 
// check user really wants to clear data 

    var ui = SpreadsheetApp.getUi(); 
var response = ui.alert('Are you sure you want to clear data for this month?', ui.ButtonSet.YES_NO); 

// Process the user's response. 
if (response == ui.Button.YES) { 
    // get the name of the current sheet 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); 
    var sheets = [ss,ss,ss]; 
    ['D2:D2', 'D4:AH9','D11:AH40'].forEach(function (r, i) { 
    SpreadsheetApp.getActive().getSheetByName(sheets[i]).getRange(r).clearContent(); 
    }) 
} else { 

} 
} 

私は各シート上のボタンを経由して、そのスクリプトを実行します。

個人のすべてのシートをループし、それぞれのデータをクリアする1つのスクリプトを実行する方法が必要です。スクリプトは、すべてのユーザーの名前を含む範囲から適切なシート名を取得する必要があります。

これは可能ですか?

誰でも私にこの作業をお願いしますか?

おかげ

答えて

1

することができますあなたのdocにループシート

var doc = SpreadsheetApp.openById(DOC_ID); 
var sheets = doc.getSheets(); 

for(sheet in sheet) { 
    var cells = [ss,ss,ss]; 
    ['D2:D2', 'D4:AH9','D11:AH40'].forEach(function (r, i) { 
     sheet(cells[i]).getRange(r).clearContent(); 
    }) 
} 
+0

おかげますが、私は唯一の個々のシートにスクリプトを実行する必要があるとして、スプレッドシート内のすべてのシートをそのループ。私はスクリプトを実行したくない他のシートがあります)ありがとう – Ged

+0

その場合、あらかじめ定義された名前のリストをループするために余分な行を追加するだけで、名前=現在のスプレッドシート名の場合はデータを消去します。 – HDCerberus

関連する問題