private void Step_SetupObjects()
        {
            string taskListGUID = null;
            string workflowLibGUID = null;

            ListsSvc.Lists sv = new ListsSvc.Lists();
            sv.Url = string.Format("{0}/{1}", SiteLoc.Text.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx");
            sv.UseDefaultCredentials = true;
            sv.Credentials = System.Net.CredentialCache.DefaultCredentials;
            sv.PreAuthenticate = true;

            XmlNode listCol = sv.GetListCollection();
            foreach (XmlNode list in listCol)
            {
                // Get Task List ID
                if (list.Attributes["ServerTemplate"].Value == "107")
                    taskListGUID = list.Attributes["ID"].Value;
                // Get No-Code Workflow Location ID
                else if (list.Attributes["ServerTemplate"].Value == "117")
                    workflowLibGUID = list.Attributes["ID"].Value;
            }

            if (string.IsNullOrEmpty(taskListGUID))
                sv.AddList("Tasks", "Tasks", 107);
            if (string.IsNullOrEmpty(workflowLibGUID))
                sv.AddList("Workflows", "Workflows", 117);
        }
 // List Web サービスから List の Guid を取得する
 private string GetListGUIDFromName(string siteLocation, string pListName)
 {
     ListsSvc.Lists sv = new ListsSvc.Lists();
     sv.Url = string.Format("{0}/{1}", siteLocation.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx");
     sv.UseDefaultCredentials = true;
     sv.Credentials = System.Net.CredentialCache.DefaultCredentials;
     sv.PreAuthenticate = true;
     XmlNode list = sv.GetListAndView(pListName, "");
     return list.ChildNodes[0].Attributes["Name"].Value;
 }
        // デフォルトのタスクリストIDなど、
        // ワークフロー作成に必要なデータを収集する
        private void GetWorkflowMetadata(string pSiteLocation, out string pTaskListGUID, out string pWorkflowLibGUID)
        {
            pTaskListGUID = null;
            pWorkflowLibGUID = null;

            ListsSvc.Lists sv = new ListsSvc.Lists();
            sv.Url = string.Format("{0}/{1}", pSiteLocation.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx");
            sv.UseDefaultCredentials = true;
            sv.Credentials = System.Net.CredentialCache.DefaultCredentials;
            sv.PreAuthenticate = true;
            XmlNode listCol = sv.GetListCollection();
            foreach (XmlNode list in listCol)
            {
                // Get Task List ID
                if(list.Attributes["ServerTemplate"].Value == "107")
                    pTaskListGUID = list.Attributes["ID"].Value;
                // Get No-Code Workflow Location ID
                else if (list.Attributes["ServerTemplate"].Value == "117")
                    pWorkflowLibGUID = list.Attributes["ID"].Value;
            }
        }
        // フィールド名称からフィールドの内部名を取得する
        private string GetFieldInternalName(string pSiteLocation, string pDocListGUID, string pDisplayName)
        {
            string fieldName = null;

            ListsSvc.Lists sv = new ListsSvc.Lists();
            sv.Url = string.Format("{0}/{1}", pSiteLocation.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx");
            sv.UseDefaultCredentials = true;
            sv.Credentials = System.Net.CredentialCache.DefaultCredentials;
            sv.PreAuthenticate = true;
            XmlNode listNode = sv.GetList(pDocListGUID);
            XmlElement fieldsElem = listNode["Fields"];
            foreach (XmlElement field in fieldsElem)
            {
                if (field.Attributes["DisplayName"].Value == pDisplayName)
                    fieldName = field.Attributes["Name"].Value;
            }
            return fieldName;
        }