スプレッドシートでシート名から日付を取得する

結論

GASでシート名を取得する関数を作成し、シート名から日付を取得する

まず、スプレッドシートにて、ツール->スクリプトエディタをクリックして開き、SHEETNAME()という関数を作成するため、以下のコードを記載する。

function SHEETNAME(){
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}
  1. 記載したら、保存して実行する。
    • MACの場合は「Command + S」で保存、「Command + R」で実行。
    • Windowsの場合は「Ctrl + S」で保存、「Ctrl + R」で実行。
  2. 実行時に、許可を求められた場合は許可をする。
    • 上記の関数は、アクティブなシート名を返すため、例えばシート名が「201903」の場合は「201903」を返します。

また、「201903_モガ太郎」のように、日付以外の文字も含まれている場合は、
例えば、正規表現での文字列検索(REGEXEXTRACT関数)や、LEFT,RIGHT関数などを用いて、以下のようなこともできます。

=DATE(LEFT(REGEXEXTRACT(SHEETNAME(),"\d{6}"),4),RIGHT(REGEXEXTRACT(SHEETNAME(),"\d{6}"),2),1)
  1. REGEXEXTRACTでシート名から6桁の数字を探して取り出す
  2. 6桁の数字のうち左から4桁の数字が年なのでLEFT関数で取り出す
  3. 6桁の数字のうち右から2桁の数字が月なのでRight関数で取り出す
  4. DETE関数で日付にする

参考

  • https://tonari-it.com/spreadsheet-excel-date-function/
  • https://tanuhack.com/useful-tool/spreadsheet/get-sheetname/
  • https://officepress.net/googledocs/function-spread/left-spread.html
  • https://tanuhack.com/useful-tool/spreadsheet/regexp/