検索
ホームページバックエンド開発Python チュートリアルタイムシートを自動化するための怠zyなエンジニアガイド:パート1

The Lazy Engineer’s Guide to Automating Timesheets: Part 1

タイムシート:すべてのソフトウェアエンジニアの存在の悩み。 午前3時に複雑なバグを格闘して、勤務時間を細心の注意を払って文書化してはいけませんか? 残念ながら、フリーランスやフルタイムの雇用には、しばしばこの退屈な仕事が必要です。

今年、私は自分の限界に達しました。 忙しい年のプロジェクトの後、いくつかはキャンセルされ、一部は再設計され、他の人は無期限に延期されました - 私は迫り来る年末のタイムシートの締め切りに直面しました。私の一年間の仕事を手動で再現する見込みは困難でした。 私の解決策?それを自動化します。

これは、タイムシートの恐怖からコーディングの冒険への私の旅です。 合理化された効率的なアプローチの準備をしてください

問題:タイムシートは悪夢です

ステージを設定しましょう:

    チャレンジ:
  • 1年間、すべてのタスクに費やされた1時間ごとに記録します。
  • ハードル:
  • 私の記憶は、書かれていない単位テストよりも信頼性が低いです。 締め切り:
  • ある日。 Just
  • 1つの 手動入力は不可能でした。私の計画:Jira、Git、Slack、Outlookなどの毎日のツールからデータを抽出し、包括的なタイムシートに結合します。
  • ツール

私の武器:


JIRA:

タスクとチケットの追跡。

  1. git:履歴をコミットします(すべての優れたエンジニアがチケットにコミットするためですよね?)
  2. SLACK:
  3. チームコミュニケーション(会議とメッセージが含まれています)。
  4. OUTLOUK:
  5. カレンダーイベント(はい、ミーティングが機能しているためです)
  6. ステップ1:JIRAチケットの抽出 最初に、私はジラに取り組みました。特定の時間枠内ですべてのチケットが割り当てられていました。 Jiraの堅牢なAPIと少しのPythonマジックにより、これが達成可能になりました。
  7. スクリプト

このPythonスクリプトは、Jiraチケットを取得します:

機能

認証:

jira電子メールとAPIトークンを使用して認証します。
import os
from jira import JIRA
import pandas as pd
from datetime import datetime
import logging
import sys
from typing import List, Dict, Any
import argparse

# ... (rest of the script remains the same) ...

jqlクエリ:

JQLクエリを構築して、日付範囲内で割り当てられたチケットをフェッチします。
  1. データのエクスポート:分析のために結果の結果をCSVにエクスポートします。
  2. ステップ2:Git Commitsの取得
  3. 次に、gitを処理しました。 私たちのチームにはコミットメッセージにJIRAチケットIDが含まれているため、コミットデータを抽出してチケットにリンクするスクリプトを作成しました。

    スクリプト

    import os
    from jira import JIRA
    import pandas as pd
    from datetime import datetime
    import logging
    import sys
    from typing import List, Dict, Any
    import argparse
    
    # ... (rest of the script remains the same) ...

    機能

    1. git log:を使用して、コミット履歴を取得します。git log
    2. JIRA ID抽出:正規表現を使用して、コミットメッセージからJIRAチケットIDを抽出します。
    3. csvエクスポート:
    4. 結果をCSVに保存します。
    ステップ3:スラックメッセージの処理

    Slackはより挑戦的であることが証明されました。メッセージはコンテキストが豊富で、直接タスクマッピングが困難になります。 私は(コストと複雑さのために)AIをバイパスし、コミュニケーション時間のために一般的なチケットを作成し、スラックメッセージを取得するスクリプトを書きました。

    スクリプト

    機能

    import subprocess
    import csv
    import re
    
    def get_git_commits(since_date=None, author=None):
        # ... (rest of the script remains the same) ...

    会話リスト:
      ボットにアクセスできるすべてのチャネルとDMを取得します。
    1. メッセージの取得:指定された日付範囲内でメッセージを取得します。
    2. csvエクスポート:メッセージをCSVに保存します。
    3. ステップ4:Outlook Meetingsのキャプチャ
    最後に、私は会議を取り入れました。
    Pythonライブラリを使用して、カレンダーイベントを抽出してCSVにエクスポートするスクリプトを作成しました。

    スクリプト

    exchangelib機能

    import os
    from datetime import datetime
    from slack_sdk import WebClient
    from slack_sdk.errors import SlackApiError
    import pandas as pd
    
    # ... (rest of the script remains the same) ...
    認証:

    認証のためにOutlookのメールとパスワードを使用します。

    1. カレンダークエリ:指定された日付範囲内でカレンダーイベントをフェッチします。
    2. csvエクスポート:
    3. イベントをCSVに保存します。
    4. 次は何ですか? 今、4つのCSVファイルがありました:

    JIRAチケット:

    すべてのタスクが機能しました

    git commits:
      すべてのコードが記述されています。
    1. Slackメッセージ:すべての通信。
    2. Outlook Meetings:すべての会議が出席しました。
    3. パート2では、これらのデータセットを組み合わせて完全なタイムシートを作成する方法を示します。 ヒント:Python、データ操作、魔法のタッチ。
    4. お楽しみに! 覚えておいてください:効率が重要です。
    5. ソフトウェアエンジニアとして最も好きではないタスクは何ですか?もう自動化しましたか?コメントであなたの経験を共有してください!

以上がタイムシートを自動化するための怠zyなエンジニアガイド:パート1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonのハイブリッドアプローチ:コンピレーションと解釈を組み合わせたPythonのハイブリッドアプローチ:コンピレーションと解釈を組み合わせたMay 08, 2025 am 12:16 AM

pythonusesahybridapproach、コンコイリティレーショントビテコードと解釈を組み合わせて、コードコンピレッドフォームと非依存性bytecode.2)

Pythonの「for」と「while」ループの違いを学びますPythonの「for」と「while」ループの違いを学びますMay 08, 2025 am 12:11 AM

keydifferencesは、「for」と「while "loopsare:1)" for "for" loopsareideal forterating overencesonownowiterations、while2) "for" for "for" for "for" for "for" for "for" for for for for "wide" loopsarebetterunuinguntinunuinguntinisisisisisisisisisisisisisisisisisisisisisisisisisisisations.un

重複したPython Concatenateリスト重複したPython ConcatenateリストMay 08, 2025 am 12:09 AM

Pythonでは、さまざまな方法でリストを接続して重複要素を管理できます。1)オペレーターを使用するか、すべての重複要素を保持します。 2)セットに変換してから、リストに戻ってすべての重複要素を削除しますが、元の順序は失われます。 3)ループを使用するか、包含をリストしてセットを組み合わせて重複要素を削除し、元の順序を維持します。

Pythonリスト連結パフォーマンス:速度比較Pythonリスト連結パフォーマンス:速度比較May 08, 2025 am 12:09 AM

fasteStMethodDodforListConcatenationinpythOndontsonistize:1)forsmallLists、operatorisefficient.2)forlargerlists、list.extend()orlistcomlethingisfaster、withextend()beingmorememory-efficient bymodifyigniviselistinistin-place。

Pythonリストに要素をどのように挿入しますか?Pythonリストに要素をどのように挿入しますか?May 08, 2025 am 12:07 AM

to insertelementsIntopeaseThonList、useappend()toaddtotheend、insert()foraspificposition、andextend()formultipleElements.1)useappend()foraddingsingleitemstotheend.2)useintert()toaddataspecificindex、cont'slowerforforgelists.3)

Pythonリストは、フードの下に動的な配列またはリンクリストですか?Pythonリストは、フードの下に動的な配列またはリンクリストですか?May 07, 2025 am 12:16 AM

PythonListsareimplementedasdynamicarrays、notlinkedlists.1)they restorediguourmemoryblocks、それはパフォーマンスに影響を与えることに影響を与えます

Pythonリストから要素をどのように削除しますか?Pythonリストから要素をどのように削除しますか?May 07, 2025 am 12:15 AM

pythonoffersfourmainmethodstoremoveelements fromalist:1)removesthefirstoccurrenceofavalue、2)pop(index(index(index)removes regvess returnsaspecifiedindex、3)delstatementremoveselementselementsbyindexorseLice、および4)clear()

スクリプトを実行しようとするときに「許可を拒否された」エラーを取得した場合、何を確認する必要がありますか?スクリプトを実行しようとするときに「許可を拒否された」エラーを取得した場合、何を確認する必要がありますか?May 07, 2025 am 12:12 AM

toresolvea "許可denided" errors whenrunningascript、sofflowthesesteps:1)checkandadaddadaddadadaddaddadadadaddadaddadaddadaddaddaddaddaddadaddadaddaddaddaddadaddaddaddadadaddadaddadaddadadisionsisingmod xmyscript.shtomakeitexexutable.2)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境