JavaScript新年あけましておめでとうございます。本年もどうぞよろしくお願いいたします。シリーズPart4です。tech.arms-soft.co.jp(1)はじめにスプレッドシートで条件付き書式を使うと見やすくなってよいのですが、ドキュメントの作成作業中に条件式を手で追加していく作業がとても面倒くさいのが悩みです。作業の中でセルや行を増減させたりコピー&ペーストしたりしていくと条件式に設定している参照行や範囲がだんだんズレてしまっていって、意図しない動きになってしまったときには悲しみに暮れました。「代わりにGASが使えたりする...?そうすればもっとスマートに作業ができるのかも...?」と思い至りましたのでチャレンジします。(2)GASのトリガー(イベントハンドラ)について今回のポイントはイベントハンドラです。GAS公式ではトリガーと呼ぶので以降はそう呼びます。GASには2種類のトリガーが用意されています。Triggers:ドキュメントを開いた時・編集した時などの基本的なトリガー。Triggers:あらかじめ用意されているイベントの中から目的や用途に合わせて自作の関数をトリガーに設定できる。Triggersよりも柔軟。Triggersに注目していきます。Triggersに用意されているトリガーの関数は以下の通りです。冒頭をナナメ読みですが、これだけのトリガーが用意されていることがわかりました。(ファイルを開いた時に動くイベントハンドラonOpen(event)は前回の記事のおまけで少しだけ触れています。)今回はスプレッドシートの編集時にアクションを起こしたいので、onEdit(event)を使っていきます。練習用にこのようなToDoリストをざっと作ってみました。やりたいことは以下の2つです。例のごとくスクリプトエディタを開いてonEdit()を作成しました。}}「え、急に出てきたけれどevent.sourceとは一体...??」と困惑しました。トリガーのパラメータであるeventオブジェクトには操作したイベントに関連する情報が格納されています。https://developers.google.com/apps-script/guides/triggers/eventslogを出してみると中身がわかりやすいです。操作したユーザーや編集前・編集後のValueなどが出ています。eventの中身はトリガーによって少し違うようです。sourceは編集対象のSheetオブジェクト、rangeは編集対象のRangeオブジェクトでしたので、それぞれgetActiveSheet()やgetActiveRange()で取得することができました。Rangeに対してsetBackgroundColor()で背景色を設定すれば、条件付き書式もどきの完成です。Triggersには制限事項があります。run.トリガーはスクリプトやAPIで変化したものについてはイベント検知しない。Triggersでは不可能。seconds.30秒越えて実行はできない。「進捗」とは別に「期日」が過ぎていたらフォントを赤字にする...というのも今回一緒に実装してみたかったのですが、ひとつのonEdit()内で処理を切り分けようとしたせいか、うまくいきませんでした...。一般的な方法ではないのでしょうか...?調査も含めて、次回チャレンジしてみたいです。