如何使用流兩個資料來源之間複製項目

簡介

本文說明如何使用 Microsoft 流程,以有效地複製兩個資料來源之間的項目。

例如,您可以建置流程,以複製的所有項目到第二個 SharePoint 網站的一個站台中的 SharePoint 清單。流程程序也可以運作 SharePoint 清單和 SQL 資料表或任何 100 個以上的服務所支援的流程之間。

其他相關資訊

您必須填入所有必要的資料行。沒有需求,在兩個資料來源中的所有資料行名稱是相同的但必須能夠唯一識別兩個資料來源之間的項目 (您所選擇) 的至少一個資料行。

在下列範例中,我們假設 [職稱] 欄是這兩種來源中的相同。

設定觸發程序

第一個步驟是設定您在 [來源] SharePoint 清單上的觸發程序。由於您想要擷取所有項目的變更 (不只新項目),因此您應該選取SharePoint-修改現有的項目時觸發程序。

Sharepoint - When an existing item is modified trigger with site address and list name

注意雖然觸發程序名稱提及只修改現有的項目時,觸發程序也會反應新增到清單的新項目。

在目的地中找到的項目

搜尋中取得其 ID,並更新它的 [目的地] 清單的項目。雖然流量篩選器動作,您應該在這種情況下使用該動作,因為該動作會從 SharePoint 中下載所有清單項目。該處理將會很緩慢、 會用掉您的配額,而且如果清單中有超過 256 個項目就無法運作。

相反地,您應該使用 [篩選條件查詢] 欄位在 SharePoint 中取得項目的步驟。新增取得項目動作,,,然後選取 [顯示進階選項],來顯示所有欄位。如果您比對的來源] 清單中的資料列標題,在 [篩選條件查詢] 欄位中輸入下列 (請確定您包含單引號記號):

標題 eq '[選取動態內容的標題]'

Type the title in the Filter Query field on the Get items step

您不一定要有兩個資料來源之間的嚴格的 1:1 資料行對應。例如,如果您有 [來源] 清單中的名字姓氏資料行,並在 [目的地] 清單中的 [全名] 欄,您可以鍵入FullName eq '[名字] [姓氏]'清單名稱] 欄位。

新增條件,以檢查項目是否存在

當您從 [目的地] 清單中取得項目時,其中一個下列的情況下會是 true:

  • 項目尚未存在於目的地,所以您不必建立它。

  • 項目中已存在目的地,,您必須更新它。

使用條件來判斷實際的情況。若要執行這項操作,請參考下列步驟:

  1. 選取新的步驟,,,然後選取 [加入函式

  2. 條件卡上的 [左的文字] 方塊中,選取 [加入動態內容注意集合,其中包含所取得的項目傳回的所有項目清單是已命名。請確定取得項目從選取的值,(不是由觸發程序如果現有的項目變更時)。   A value collection is listed in Get items when adding a condition

  3. 條件卡,在 [關聯性] 方塊中,選取 [等於,然後在 [] 方塊中鍵入0

  4. 在 [進階模式中,加入長度函式。這是很重要的因為動態值內容傳回的項目清單。您必須判斷清單 (沒有值) 的長度是否等於 0 (零)。

  5. 在進階模式中,鍵入本文 ('Get_items') ? ['value']運算式前後的length() 。條件如下所示。 Condition box shows the length of the list equals 0

建立項目

如果是分支,您將加入 SharePoint建立項目步驟。

在 「 取得項目 」 步驟中,選擇您所使用的清單與站台。在建立項目,您應使用觸發程序只能從欄位填入每個資料行。因為,將來自 [目的地] 清單中,不是來源清單,您不應該使用 「 取得項目 」 步驟的任何資料。取得項目將會出現,觸發程序上。請確定您捲動到底端來尋找它。

更新項目

在 [如果否分支中,您將加入 SharePoint更新項目步驟。

選取 [網站與清單]。然後,選取 [從傳回的識別碼取得項目步驟。 ID shows in Get items when updating item

當您新增 ID 時,會自動將適用於每種的容器新增周圍的更新項目步驟。這是預期的行為。如果您在 [取得項目] 步驟中使用的查詢是正確的容器會更新您想要複製的項目。完成其餘的欄位 (並確定您使用觸發程序不是從取得項目呼叫的輸出之後),則條件區塊應該類似下列的螢幕擷取畫面。 "If Yes" and "If No" branches with the condition

流程程序的限制

流程程序可讓您能夠反映在第二個清單中第一個清單中所做的變更。

下列限制適用於 [處理程序:

  • 如果項目會從第一個清單中刪除,不會從第二個清單刪除項目。這是因為沒有為刪除的項目時沒有觸發程序。在此情況下,沒有一項刪除作業發生時,會收到通知的流程方法。相反地,我們建議您加入的資料行,指出項目已不再需要或相關,而不是從 SharePoint 清單 (或 SQL 資料表或其他資料來源) 刪除項目。兩個清單之間,會同步該資料行。

  • 如果變更的欄位,您用來保留兩個清單之間的同步處理的項目,新的項目會建立在目的地] 清單中。比方說,如果您使用某個人的 [名稱] 欄複製兩個清單中,與該人員的名稱資料行變更時,流程就會認為該變更,以新的項目,不更新現有的項目。如果您可以保證絕對不會變更 [名稱] 欄中,您將不會受到這項限制。不過,如果沒有變更名稱] 欄中的色彩,您必須將儲存的項目 ID,第一個清單中的欄加入至 [目的地] 清單中的色彩。在此情況下,而不要使用名稱尋找項目,您可以使用ID。(被保證識別碼都是唯一)。

  • 此程序不是雙向的同步。這表示,如果項目會更新到 [目的地] 清單中,所做的變更將不會反映在 [來源] 清單中。您不應該嘗試設定流程中的雙向同步,因為,會建立無限的迴圈,而不需額外的修改。例如,清單 A 將更新清單 B、 B 清單會更新清單 A、 清單 A 將更新清單 B,一次,依此類推。

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×