ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS】VLOOKUPをやってみる(Javascriptの配列に対するfind,map)
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- 1月に12月の日付を入力した際に去年にする方法がわかります。
- 1月に12月の日付を入力した際に自動的に去年する方法がわかります。
逆に、知らないと
めんどくさいなと思いながらも常に
西暦から入力しなければ行けません。
なので、サクッとマスターして
あのー、12/3と入力して去年の12/3にならないですか?
うーーん、いろいろ回避する方法はあるよ。
と答えてあげてください。
Excelの場合はこちら↓
動画はこちら
シートはこちら
※クリックするとシートが開きます。
スクリプト
function dummy() {
Browser.msgBox("メッセージボックスのテスト", "ダミーです", Browser.Buttons.OK)
}
/**
* 日付入力時に
* 今日が1月~3月で、入力が11月12月の場合は、去年にする
* 今日が11月、12月で、入力が1月~3月の場合は、来年にする
*/
function onEdit(e) {
const value = e.range.getValue()
//とりあえず入力値がobject以外の場合は終了
if (typeof value !== "object") return
const cell = e.source.getActiveCell()
const BEGIN_YEAR = 1
const END_YEAR = 2
const today = new Date()
let date = value
const inputmonth = date.getMonth() + 1 //入力された月(読みやすいように1足しておく)
let nowm = 0 //0:デフォルト 1:年末 2:年始
let nowmonth = today.getMonth() + 1 //今日の月(読みやすいように1足しておく)
//今日が1月~3月の場合は、年始とする
if ((nowmonth == 1) || (nowmonth == 2) || (nowmonth == 3)) {
nowm = BEGIN_YEAR
}
//今日が11月か12月の場合は、年末とする
if ((nowmonth == 11) || (nowmonth == 12)) {
nowm = END_YEAR
}
//年始、年末以外は何もしない
if (nowm == 0) return
//入力が今年じゃない場合は、何もしない
if( today.getFullYear() != date.getFullYear()) return
//今日が年始で入力が11月12月は、去年
if (nowm == BEGIN_YEAR) {
if ((inputmonth == 11) || (inputmonth == 12)) {
date.setFullYear(date.getFullYear() - 1) //去年にする
cell.setValue(date)
}
}
//今日が年末で入力が1月~3月は来年
if (nowm == END_YEAR) {
if ((inputmonth == 1) || (inputmonth == 2) || (inputmonth == 3)) {
date.setFullYear(date.getFullYear() + 1) //来年にする
cell.setValue(date)
}
}
}
最後までご覧いただきありがとうございます。
つぎはこちら
【GAS】CSVファイルをローカル(パソコン)に出力する方法(Gスプレッドシート)