📝

Pleasanter で既読管理

2023/12/14に公開

これは2023 個人アドベントカレンダーの 4 日目の記事です。

tl;dr

  • スクリプト機能で既読をつけてみる試み
  • 何らかの周知のために、このサイト見に来てね、といっても、すぐに全員が見てくれるわけではないので、どう管理していくか、の試案
    • アドカレ 3 日目の全社的な勤務状況のチェックで、チャットツールに「ここ見て」とポストしたパターンで、見てくれたのかを追跡したいなと思った
    • ボタンを押させる、も一つではあるが、見たけど押し忘れた、みたいなのをプログラム的に防ぎたい
    • 退屈なことは Pleasanter にやらせよう[1]

実装

スクリプト機能で、画面が表示して一定時間たったら、既読の意味でチェック A 項目をオンにしてみます。

以下のコードを、テーブルの管理の「スクリプト」タブにて、「編集」にチェックをつけて保存してください。

const mark = () => {
  $p.apiUpdate({
    id: $p.id(),
    data: {
      ApiVersion: 1.1,
      CheckHash: {
        CheckA: true,
      },
    },
    done: () => {
      location.reload();
    },
  });
};
$p.events.on_editor_load = () => {
  if (!$p.getControl('CheckA').prop('checked')) {
    setTimeout(mark, 5000); //5 秒滞在したら既読にする
  }
};

あわせて、一般ユーザにはチェック A 項目を非表示にしておき、催促の通知などの条件でだけ利用すれば、利用者に意識させずに運用することもできそうかなと思います。

まとめとしての残された課題

  • この実装のポイントとして done のコールバックで画面をリロードをしている点があります。
    • こうすることで、チェック処理が走ったあとで、ユーザが更新をしようとしたときに、既に更新されたデータがあるとして、リロードを求められる事態になるのを避けられます。
  • ただ、既読にするまでのラグでユーザが何かしら記入をはじめたりしていると、そのデータが失われるのでネックになります。
    • また画面のリロードもあまりユーザ体験として好ましいものではないでしょう。
  • また、ワークフロー的な担当者が見たかどうか、をチェックする目的であれば利用できますが、LINE のグループチャットでの「既読 5」のような使い方には適しません。
  • このあたり、今後検討してみたいと思います。
脚注
  1. 退屈なことは Python にやらせよう ↩︎

GitHubで編集を提案

Discussion