在Python中實作MS Project計算模式

Microsoft Project 提供三種運算模式:自動、手動和無。每種模式都對項目的更新和重新計算方式提供不同程度的控制。在本文中,我們將學習如何在 Python 中以程式設計方式實作 MS Project 計算模式。無論您是從手動計劃遷移到自動規劃,還是需要靈活地管理專案截止日期,本文都將為您提供此類轉換所需的資訊和資源。讓我們開始吧!

本文涵蓋以下主題:

  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. 將計算模式設定為手動。
  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")

# 將兩個任務連結在一起,在手動模式下不應重新計算其日期
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 專案計算模式設為無。

# 此程式碼範例示範如何在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")

# 請注意,甚至 ids 也沒有計算
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 應用程式中。如有任何疑問,請隨時聯絡我們的免費支援論壇

也可以看看