Python で MS プロジェクトの計算モードを実装する

Microsoft Project には、自動、手動、なしの 3 つの計算モードが用意されています。各モードでは、プロジェクトの更新および再計算方法を異なるレベルで制御できます。この記事では、MS Project の計算モードを Python でプログラム的に実装する方法を学習します。手動スケジュールから自動スケジュールに移行する場合でも、プロジェクトの期限管理に柔軟性が必要な場合でも、この記事では、そのような移行に必要な情報とリソースを提供します。始めましょう!

この記事では次のトピックについて説明します。

  1. プログラムでプロジェクトを計算するための Python API
  2. 手動プロジェクト計算
  3. プロジェクトの自動計算
  4. プロジェクト計算なしモード

プログラムでプロジェクトを計算するための Python API

Aspose.Tasks for Python API を使用して MS プロジェクト 計算モード を実装します。依存プロパティの値を計算するために、次の計算モードが提供されます。

  • なし – このモードでは必要なプロパティのみが設定され、プロジェクトの日付とコストは再計算されません。
  • 手動 – このモードでは、プロジェクトの日付とコストを再計算せずに、依存オブジェクトのプロパティのみを設定します。
  • 自動 – このモードでは、プロジェクトの日付とコスト プロパティが自動的に再計算されます。

コンソールで次の pip コマンドを使用して、パッケージをダウンロードするか、PyPI から API をインストールしてください。

pip install aspose-tasks

Python で MS プロジェクトを手動で計算する

以下の手順に従って、計算モードを手動に設定して検証できます。

  1. Project クラスのインスタンスを作成します。
  2. 計算モードを MANUAL に設定します。
  3. プロジェクトの開始日を指定します。
  4. 新しいタスク (タスク 1 およびタスク 2 など) を追加します。
  5. タスクのプロパティを読み取ります。
  6. その後、TaskLinksクラスのオブジェクトを初期化し、タスクを連携します。
  7. 最後に、タスク 2 の開始日と終了日を確認します。

次のコード サンプルは、Python でプロジェクトを手動で計算する方法を示しています。

# このコード例は、Python の手動計算モードを使用して MS プロジェクトを計算する方法を示します。
import aspose.tasks as tasks
from datetime import datetime, timedelta

# プロジェクトのインスタンスを作成する
project = tasks.Project()

# 計算モードを手動に設定します
project.calculation_mode = tasks.CalculationMode.MANUAL

# プロジェクトの開始日を設定する
project.start_date = datetime(2015, 4, 15)

# 新しいタスクを追加する
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# 必要なプロパティは手動モードで設定されます
print("Task1.Id Equals 1 : ", task1.id == 1)
print("Task1 OutlineLevel Equals 1 : ", task1.outline_level == 1)
print("Task1 Start Equals 15/04/2015 08:00 AM : ", task1.start) == datetime(2015, 4, 15, 8, 0, 0)
print("Task1 Finish Equals 15/04/2015 05:00 PM : ", task1.finish) == datetime(2015, 4, 15, 17, 0, 0)
print("Task1 Duration Equals 1 day : ", str(task1.duration) == "1 day")
print("Task2 Start Equals 15/04/2015 08:00 AM : ", task2.start == datetime(2015, 4, 15, 8, 0, 0))
print("Task2 Finish Equals 15/04/2015 05:00 PM : ", task2.finish == datetime(2015, 4, 15, 17, 0, 0))
print("Task2 Duration Equals 1 day : ", str(task2.duration) == "1 day")

# 2 つのタスクをリンクすると、手動モードでは日付が再計算されません。
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# タスク 2 の日付に変更はありません
print("Task1 Start Equals Task2 Start : ", task1.start == task2.start)
print("Task1 Finish Equals Task2 Finish : ", task1.finish == task2.finish)
Task1.Id Equals 1 :  True
Task1 OutlineLevel Equals 1 :  True
Task1 Start Equals 15/04/2015 08:00 AM :  2015-04-15 08:00:00
Task1 Finish Equals 15/04/2015 05:00 PM :  2015-04-15 17:00:00
Task1 Duration Equals 1 day :  True
Task2 Start Equals 15/04/2015 08:00 AM :  True
Task2 Finish Equals 15/04/2015 05:00 PM :  True
Task2 Duration Equals 1 day :  True
Task1 Start Equals Task2 Start :  True
Task1 Finish Equals Task2 Finish :  True

Python でのプロジェクトの自動計算

同様に、前述の手順に従って、自動計算モードを使用して MS プロジェクトを計算できます。ただし、手順 2 で計算モードを自動に設定するだけです。

次のコード サンプルは、Python の自動計算モードを使用して MS プロジェクトを計算する方法を示しています。

# このコード例は、Python の自動計算モードを使用して MS プロジェクトを計算する方法を示します。
import aspose.tasks as tasks
from datetime import datetime, timedelta

# プロジェクトのインスタンスを作成する
project = tasks.Project()

# 計算モードを自動に設定します
project.calculation_mode = tasks.CalculationMode.AUTOMATIC

# プロジェクトの開始日を設定する
project.start_date = datetime(2015, 4, 15)

# 新しいタスクを追加する
task1 = project.root_task.children.add("Task 1")
task2 = project.root_task.children.add("Task 2")

# タスクをリンクする
link = project.task_links.add(task1, task2, tasks.TaskLinkType.FINISH_TO_START)

# 再計算された日付を確認する
print("Task1 Start + 1 Equals Task2 Start : ", (task1.start + timedelta(days=1)) == task2.start)
print("Task1 Finish + 1 Equals Task2 Finish : ", (task1.finish + timedelta(days=1)) == task2.finish)
print("RootTask Finish Equals Task2 Finish : ", task2.finish == project.root_task.finish)
print("Project Finish Date Equals Task2 Finish : ", task2.finish == project.finish_date)
Task1 Start + 1 Equals Task2 Start :  True
Task1 Finish + 1 Equals Task2 Finish :  True
RootTask Finish Equals Task2 Finish :  True
Project Finish Date Equals Task2 Finish :  False

Python のプロジェクト計算モードなし

計算モードを NONE に設定し、以下の手順に従って検証できます。

  1. Project クラスのインスタンスを作成します。
  2. 計算モードを「なし」に設定します。
  3. プロジェクトの開始日を指定します。
  4. 新しいタスク (タスク 1 など) を追加します。
  5. タスクのプロパティを読み取ります。
  6. その後、タスクの期間を日単位で設定します。
  7. 最後に、タスクの開始日と終了日を確認します。

次のコード サンプルは、Python を使用して MS プロジェクトの計算モードを none に設定する方法を示しています。

# このコード例は、Python で MS プロジェクトの計算モードを NONE に設定する方法を示します。
import aspose.tasks as tasks
from datetime import datetime, timedelta

# プロジェクトのインスタンスを作成する
project = tasks.Project()

# 計算モードをなしに設定します
project.calculation_mode = tasks.CalculationMode.NONE

# 新しいタスクを追加する
task = project.root_task.children.add("Task")

# IDさえも計算されないことに注意してください
print("Task.Id Equals 0 : ", task.id == 0)
print("Task.OutlineLevel Equals 0 : ", task.outline_level == 0)
print("Task Start Equals DateTime.MinValue : ", task.start == datetime.min)
print("Task Finish Equals DateTime.MinValue : ", task.finish == datetime.min)
print("Task Duration Equals 0 mins : ", str(task.duration) == "0 mins")

# 期間プロパティを設定する
task.duration = project.get_duration(2.0, tasks.TimeUnitType.DAY)
print("Task Duration Equals 2 days : ", str(task.duration) == "2 days")
print("Task Start Equals DateTime.MinValue  : ", task.start == datetime.min)
print("Task Finish Equals DateTime.MinValue  : ", task.finish == datetime.min)
Task.Id Equals 0 :  True
Task.OutlineLevel Equals 0 :  False
Task Start Equals DateTime.MinValue :  True
Task Finish Equals DateTime.MinValue :  True
Task Duration Equals 0 mins :  True
Task Duration Equals 2 days :  True
Task Start Equals DateTime.MinValue  :  True
Task Finish Equals DateTime.MinValue  :  True

無料ライセンスを取得する

無料の一時ライセンスを取得して、評価制限なしでライブラリを試すことができます。

Python でプロジェクトを計算する – 学習リソース

計算モードの実装と MS プロジェクトのスケジュールと期間の再計算に加えて、以下のリソースを使用してライブラリの他のさまざまな機能を探索できます。

結論

この記事では、Python でプログラムによってプロジェクト計算モードを設定する方法を学習しました。また、依存プロパティの値が各計算モードでどのように計算されるかについても説明しました。 .NET 経由で Aspose.Tasks for Python を利用すると、そのような機能を Python アプリケーションに簡単に組み込むことができます。不明な点がある場合は、無料サポート フォーラムまでお気軽にお問い合わせください。

関連項目