理由あって Google Spreadsheet でカレンダー的ななにかを作ることになった。最近すぐに忘れてしまうので、1行日記的なものをごにょごにょしたわけだ。
Excel や OOo などのスプレッドシートでは曜日ごとに色分けするのは簡単だ。Google でも「条件に応じて変更」なる機能があり、セルの色を変えることができるのだが、哀しいかなその条件に関数が使えない。
たかが30日程度のことだ、手作業で色を変えてもいいのだが、スマートじゃない。そこで初めてのスクリプトを書いてみることにした。
困ったことにスクリプト内からweekday()関数を呼び出す方法がわからない。よく考えたら、日付というのは基準日からの通算であり、Google では 1899/12/31 が第1日目となっているようだ。ということは単純に 7 で割り、その余りが曜日になるはずだ。
ということでソース。
function WeekdayColor() { var range = SpreadsheetApp.getActiveRange(); var cols = range.getNumColumns(); var rows = range.getNumRows(); for (var i = 1; i <= rows; i++) { for (var j = 1; j <= cols; j++) { var cell = range.getCell(i, j); var w = cell.getValue(); // weekday()が使えないので日付を7で割る if ((w % 7) == 0) { cell.setFontColor("#F00"); } else if ((w % 7) == 6) { cell.setFontColor("#0F0"); } } } }
色指定したい範囲を選択して、「ツール」→「スクリプト」→「管理」から「WeekdayColor」を実行するだけだ。なお、祝日は手作業で色変えしている。
丁度必要としていたので、大変助かりました。
ありがとうございます。