見出し画像

Notionの数式プロパティで「3営業日前」と「前週のhoge曜日」を表示させる

Notionの数式機能はとても便利ですが、まだchat-GPTの精度も高くなく、求めている数式がGPT頼りでなかなか作れません。

今回、タスク管理をNotionにする上で、「3営業日前」と「前週のhoge曜日」を表示させる数式を作成したので共有したいと思います。


ある日付プロパティの3営業日前の日付を表示する

lets(
    closedDays,
    ["土","日"],
    start,
    dateSubtract(prop("日付").dateEnd(), 5, "days"),
end,
prop("日付").dateEnd(),
japaneseHolidays,
["01-01","01-09","02-11","02-23","03-21","04-29","05-03","05-04","05-05","07-17","08-11","09-18","09-23","10-09","11-03","11-23"],
days,
dateBetween(end,
start,
"days"
),
dates,
"x".repeat(days + 1).split("").map(
    (_, index) = > ! index ? start: start.dateAdd(index, "days")
),
substitutes,
dates.filter(
    current = > current.formatDate("EEE") == "日" & & japaneseHolidays.includes(current.formatDate("MM-DD"))
),
substitutesLen,
substitutes.length(),
candidates,
"x".repeat(5).split("").map(
    (_, index) = > lets(
        add
,
            index + 1,
            substitutes.map(
                current = > current.dateAdd(
                    add
,
                        "days"
                )
            ).filter(
                current = > ! closedDays.includes(current.formatDate("EEE")) & & ! japaneseHolidays.includes(current.formatDate("MM-DD"))
            )
    )
),
substitutes,
"x".repeat(substitutesLen).split("").map(
    (_, index) = > lets(
        subIdx,
        index,
        candidates.map(current = > current.at(subIdx)).filter(current = > ! empty(current)).first()
    )
),
businessDays,
dates.filter(
    current = > ! closedDays.includes(current.formatDate("EEE")) & & ! japaneseHolidays.includes(current.formatDate("MM-DD")) & & ! substitutes.includes(current)
).map(current = > current.formatDate("MM月DD日(EEE)")),
businessDays.at(-3)
)


営業日換算は以下を参考にしました。

考え方としては、lets関数を使って、土日・休日・振替休日を抜いた日付の配列の最後から3つ目を選択するというやつですね。


ある日付プロパティの前週のhoge曜日

今回は前週の金曜日を表示しました。

lets(
    dayofweek,
    day(prop("日付")),
    dateSubtract(
        prop("IL日付"),
        ifs(
            dayofweek == 0,
            2,
            dayofweek == 1,
            3,
            dayofweek == 2,
            4,
            dayofweek == 3,
            5,
            dayofweek == 4,
            6,
            dayofweek == 5,
            7,
            dayofweek == 6,
            8
        ),
        "days"
    )
)

考え方としては、lets関数を使って、指定の曜日だったら、何日前にするというやつですね。

良いNotonLIFEを!

この記事が気に入ったらサポートをしてみませんか?