ボードにJSスクリプトを埋め込む機能を追加しました。 プロジェクト管理システムの方法

4月1日、YouGileシステムは1歳になりました。 「週末に自分用の便利なプロジェクト管理システムを作りましょう」という考えから始まったプロジェクトの深刻な締め切り。 現在、主にBaseCampとTrelloから切り替えている数千人のユーザーが、 テストとフィードバックの送信を受け付けています。



私たちはこれを主要な実験とみなし、商業化はありません。すでに十分に大きなユーザーベースで、プロジェクトをより便利に管理できる機能を探しています。



一般的に、最新の機能は、JavaScriptを少し知っていれば、システムの基本バージョンを完全に変更できることです。



簡単に機能します-キーボードショートカットCtrl +〜は、組み込みのJavaScriptエディターを呼び出します。







JSでスクリプトを記述またはアップロードすると、社内の個々の取締役会またはプロジェクトの作業が変更されます。 ライブラリが割り当てられました-約200のオブジェクトとメソッドを使用して、システムパラメーターを変更し、システム内のさまざまなイベントでコードを実行し、独自のインターフェイス要素を作成したり、既存のものを変更したりできます。

この記事では例について説明し、プロジェクト管理システムでそのような機能が必要かどうかを質問します。



カスタマイズの可能性に制限はありません。





これらの例はそれぞれ20分で実装されます。





そのような機能を作成することにした理由についてのいくつかのストーリー



プロジェクト管理システムを開発する場合、1つの強力な機能があります。 ユーザーからの膨大な量のウィッシュリストがあり、実際には互いに交差していません。 さまざまなリクエストと百万の開発パスが登場する巨大なボードが判明します。 BaceCamp、Jira、YouTrack、Asana、特にTrelloは、今日の市場にあるすべてのものが基本的なレベルでのみ企業を満足させることを理解することになります。 一般的なユニバーサルソリューションは、20人を超えるチームの要求に応えることはありません。



市場は非常に活気に満ちています。 少なくともいくつかのプロジェクトに参加し、いくつかのシステムで作業した人には、何か言いたいことがあります。 平均的なステートメントは次のようになります。



「BaseCamp / Jira / YouTrack / Asanaはうまく適合しません。これはありえないことですが、それ以上のものはありません。 さまざまな部門の5つの異なるシステムに慣れており、6か月ごとに何かを変更しています ''



大規模なオフィスでは、涙を流してさえも、「なぜアーサナを使用しないのか」という質問に答えます。答えは「はい、最近、私たちの国で導入されたため、定着しないでしょう。」



最初に、ウィッシュリストが非常に論理的でシンプルな50人のかなり大きなチームのためにシステムを変更することにしました。 しかし、改善後、予想外にいつものように、新しい願いが現れました。 そして、これらの新しいものはすでに非常に異なっていて、すべての部門から飛びました。 チームは、プロセスに合わせてシステムを変更する方法についてアイデアを打ち破りました。



これは、プロジェクト管理システムの市場における最大のニーズがカスタマイズであるという理解が生まれた方法です。 シンプルな基本バージョンが必要です。これは、他のモデルと同様に、最初の近似で十分に満たされますが、考えられるすべてのものは簡単に完成させる必要があります。



使い方



Manual.pdf



すべてが非常に単純ですが、少なくとも小さなプログラマーでなければなりません。 会社の権限レベルが「admin」の場合、ボタン(またはCtrl +〜の組み合わせ)を使用してコードエディターを呼び出すことができます。 ここで、独自のスクリプトを作成またはアップロードできます。



選択したメソッドとオブジェクトを含むライブラリがあります。 完全なリストは、右側の「APIナビゲーター」ブロックにあります。 任意のオブジェクトをマウスでエディターにプルできます-このオブジェクトで動作するコードの例が挿入されます。







例1 ボットグライダー



9:55にグライダーに通知し、ランダムなモデレーターを選択します。



1.リマインダー付きのメッセージが含まれるチャット(タスク)を選択します。 システムには、「Object Navigator」という特別なタブがあります。 ここでは、システムの任意の要素(ユーザー、タスク、列、ボード、プロジェクト、会社)のIDを簡単に見つけることができます。



var task = Items.get('ca1307c2-9b83-4796-897c-7c071dc2fa94');
      
      





2.参加者のリストからランダムに選択し、以前に選択したチャットにメッセージを配置する関数を作成します。



 function notifyOfPlanning() { var users = Users.listAll(); //   var chosen = users[Math.floor(Math.random() * users.length)]; //    c ( ) Chat.postMessage(task, '', `,  — (${chosen.name})`); //     task.setData({lastRun: App.time()}); }
      
      





3.メッセージを投稿する必要性をチェックする関数を作成します。



 function check() { if (new Date().getDay() > 5) { //  ,    return; } var last = task.getData().lastRun; if (!last) { notifyOfPlanning(); //     } else { var now = App.time(); //   (unix timestamp UTC) var dayStart = now - now % (24 * 3600 * 1000); var planningTime = dayStart + 6 * 3600 * 1000 + 55 * 60 * 1000; // 6:55   ( 9:55 MSK) if (last < planningTime && now > planningTime) { notifyOfPlanning(); } } } //      30  setInterval(check, 30000);
      
      





コメント付きの完全なスクリプトコード
 /** * ,      9:55 *    . */ // ,        var task = Items.get('ca1307c2-9b83-4796-897c-7c071dc2fa94'); function notifyOfPlanning() { var users = Users.listAll(); var chosen = users[Math.floor(Math.random() * users.length)]; //   //     ( ) Chat.postMessage(task, '', `,  — (${chosen.name})`); //     task.setData({lastRun: App.time()}); } function check() { if (new Date().getDay() > 5) { //  ,    return; } var last = task.getData().lastRun; if (!last) { notifyOfPlanning(); //     } else { var now = App.time(); //   (unix timestamp UTC) var dayStart = now - now % (24 * 3600 * 1000); var planningTime = dayStart + 6 * 3600 * 1000 + 55 * 60 * 1000; // 6:55   ( 9:55 MSK) if (last < planningTime && now > planningTime) { notifyOfPlanning(); } } } //      30  setInterval(check, 30000);
      
      







その他の例は、エディターで直接見つけることができます。 詳細なコメント付きの4つの作業スクリプトを投稿しました。





問題



プロジェクト管理用の簡単にカスタマイズ可能なソリューションのアイデアが求められていることは明らかですが、少なくとも一部の大衆ユーザーはこのオプションにアクセスできますか? 少しのコードを書くことができるという要件は非常に高いです。 おそらく、すでにどの会社でも30人以上がそのような人でなければなりません。



PS関数には名前がありません。 私たちはAPIを呼び出したくありません。意識のためにすでに多くのことが予約されており、これは私たちがやったことではありません。 アイデアがあれば、教えてください。



All Articles