2017-06-09 13 views
0

Googleシートを使用してデータをmysqlデータベースにインポートしています。毎月新しいシートが作成されます(例:06_2017)。新しく作成されたシートをアクティブなシートとして設定する方法、または現在の月の&年に基づいてシートをアクティブに設定する方法はありますか?代わりにハードコードに持つの新しく作成したgoogleシートをアクティブシートとして設定しました

var gsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('06_2017'); 
    var gsheetname = sheet.getSheetName(); 
    var gdata = sheet.getDataRange().getValues(); 
+0

あなたがPropertiesService中とSpreadsheetApp.getActive()あなた開く時]機能使用中のシートの名前を格納することができます。(getSheetByName)とscriptPropertiesから名前のファイル名を取得します。 'var scriptProperties = PropertiesService.getUserProperties(); var sheetname = scriptProperties.getProperty( 'sheetname'); ' – Cooper

答えて

0

@Cooperが言ったように、あなたは、あなたのスクリプトのonOpen()方法であなたのコードを配置し、UserPropertiesで新たに作成したシートの名前を格納することができます。

あなたは、このよう

function onOpen(e) 
{ 
    var prop = PropertiesService.getDocumentProperties(); 
    var sheet_name = prop.getProperty(<NAME_OF_SHEET>); 
    var sp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet_name).activate(); 
} 
0

をそれを行うことができ、あなたのシートに名前を付けるためのパターン「MM_YYYY」に固執しようとしている場合は、次のコードは、常に最新の日付でシートをアクティブにします。 1つのドキュメントで異なる命名パターンを使用する計画がある場合は、これを可能にするために以下のコードをリファクタリングする必要があります。

onOpen()関数は、GASのいわゆるシンプルトリガーの1つで、この関数内のすべてのコードは、ドキュメントを開いたときに実行されます。 sort()メソッドは、指定された条件に基づいて配列要素をソートします。 sort()はSheetオブジェクトをソートするためにどの基準を使用するのか分からないので、デフォルトのものをオーバーライドするためにコンパレータ関数を渡す必要があります。

コンパレータ関数は、シート名を解析し、年月日(この順番で)を新しいDate()コンストラクタに渡すことによって、日付オブジェクトを作成します。次に、日付減算の結果を使用して、 'シート'配列を降順でソートします(最高値から最低値まで)。

最後に、ソートされた配列の最初の要素(最後に作成されたシート)を取得し、アクティブシートとして設定します。

function onOpen() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheets = ss.getSheets(); 

    sheets.sort(function(a,b) { 

    var arr1 = a.getName().split("_"); 
    var arr2 = b.getName().split("_"); 

    return new Date(arr2[1], arr2[0]) - new Date(arr1[1], arr1[0]); 

    }); 

if (sheets.length < 1) { 

    return; 
} 


ss.setActiveSheet(sheets[0]); 

} 
関連する問題