2017-12-15 11 views
1

私はGoogleシートのオンオープンスクリプト機能を作成しようとしました。ドキュメントを開くと、現在の月のタブにシートが開きます。しかし、私のシートには月だけでなく、給与計算日と一致する特定の日数も表示されます。数式を修正する方法がわかりません。ここでオープンスクリプトエラー時

は、私が使用していたスクリプトです:

/** 
* Selects a monthly sheet 
*/ 
function onOpen() { 
    var monthTabs = [ "Master", "Sick Summary", "Extra Hour Summary", "Sep15- 
30", "Oct1-15", "Oct15-26", "Nov1-15", "Nov15-30", "Dec1-15", 
    "Dec15-31", "Jan1-15", "Jan15-31", "Feb1-15", "Feb15-28", "Mar1-15", 
"Mar15-31", "Apr1-15", "Apr15-30", "May1-15", "May15-31", "Jun1-15", 
"Jun15-30" ]; 

    var month = (new Date()).getMonth(); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName(monthTabs[month]); 
    ss.setActiveSheet(sheet); 
}; 

これらは私のタブのラベルです:

マスター、病気の概要、余分な時間の概要、Sep15-30、Oct1-15、Oct15- 26、Nov1-15、Nov15-30、Dec1-15、Dec15-31、Jan1-15、Jan15-31、Feb1-15、Feb15-28、Mar15-15、Mar15-31、Apr1-15、 May1-15、May15-31、Jun1-15、Jun15-30

私のシートのラベルを変更する必要があるのか​​、またはスクリプトに日付の指定を含める必要があるのでしょうか?

答えて

1

あなたがそうのようにコードを変更する必要があります:

function onOpen() { 

    var monthConv = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] 
    var month = monthConv[(new Date()).getMonth()]; 
    Logger.log(month) 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var MonthTabs = ss.getSheets() 
    for(var i = 0; i< MonthTabs.length ; i++){ 
    var shtName = MonthTabs[i].getName() 
    Logger.log(shtName.substr(0,3)) 
    if(shtName.substr(0,3) == month){ 
     Logger.log("Tab selected") 
     if((new Date()).getDate()<15){ 
     ss.setActiveSheet(MonthTabs[i]) 
     } else { 
     ss.setActiveSheet(MonthTabs[i+1]) 
     } 
     break; 
    } 
    } 

}; 

まず、あなたは三文字コードに月、変換する必要があります。

 var monthConv = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] 
     var month = monthConv[(new Date()).getMonth()]; 

その後、あなたは現在の日付に基づいて、シート名の最初の3つの文字を抽出し、一致が見つかると、現在の3文字の月コードに

 var shtName = MonthTabs[i].getName() 
     Logger.log(shtName.substr(0,3)) 
     if(shtName.substr(0,3) == month){ 

をそれを比較する必要があります。一致する最初のシートまたはその後のシートを選択します。

if((new Date()).getDate()<15){ 
     ss.setActiveSheet(MonthTabs[i]) 
     } else { 
     ss.setActiveSheet(MonthTabs[i+1]) 
     } 

これは、シートが月と日付に基づいて注文されたことを前提としています。したがって、現在の日付が15を超える場合は、次のシートを選択します。

希望するものがあります。

+0

ありがとうございます!それはうまくいった。 – Trich