允许将上载的SharePoint文件标记为";“登记入住”;

允许将上载的SharePoint文件标记为";“登记入住”;,sharepoint,vbscript,Sharepoint,Vbscript,我刚刚编写了一个vbscript,可以将文件上传到共享文件夹中。它起作用了。问题是这些文件的默认状态是“签出”。因此,我必须在前端手动选择这些文件以“签入”。我认为这违背了我剧本的目的。有办法解决这个问题吗?任何帮助都将不胜感激。非常感谢。 杰克 这里是一个示例代码 URL = "http://portal/projects/" Set objXMLHTTP = CreateObject("Msxml2.ServerXMLHTTP.3.0") Set objADOStream = CreateO

我刚刚编写了一个vbscript,可以将文件上传到共享文件夹中。它起作用了。问题是这些文件的默认状态是“签出”。因此,我必须在前端手动选择这些文件以“签入”。我认为这违背了我剧本的目的。有办法解决这个问题吗?任何帮助都将不胜感激。非常感谢。 杰克

这里是一个示例代码

URL = "http://portal/projects/"
Set objXMLHTTP = CreateObject("Msxml2.ServerXMLHTTP.3.0")
Set objADOStream = CreateObject("ADODB.Stream")
    With objADOStream
        .Open
        .Type = 1
        .LoadFromFile ("C:\VBScripts\SP\2014_Test_IC.txt")
    End With
content = objADOStream.Read
objXMLHTTP.open "PUT",URL & "2014_Test_IC.txt",False,"Username","Password"
objXMLHTTP.send content
WScript.Echo objXMLHTTP.status & ":" & objXMLHTTP.statusText
objADOStream.Close

这可以使用首页服务器扩展来完成

以下是签入文档方法的官方文档:

这是上传文档然后签入文档的代码。它与您的非常相似,您可以在最后看到在调用upload函数时在哪里填写值

  Function StringToByteArray(str)
   Set stream = CreateObject("ADODB.Stream")
   stream.Open
   stream.Type = 2 ''adTypeText
   stream.Charset = "ascii"
   stream.WriteText str
   stream.Position = 0
   stream.Type = 1 ''adTypeBinary
   StringToByteArray = stream.Read()
   stream.Close
End Function

Sub UploadFile(sourcePath, siteUrl, docName, title, checkincomment, userName, password)

   strHeader = "method=put+document%3a12.0.4518.1016" + _
      "&service_name=%2f" + _
      "&document=[document_name=" + Escape(docName) + _
      ";meta_info=[vti_title%3bSW%7c" + Escape(title) + "]]" + _
      "&put_option=overwrite,createdir,migrationsemantics" + _
      "&comment=" + _
      "&keep%5fchecked%5fout=false" + vbLf
   bytearray = StringToByteArray(strHeader)

   Set stream = CreateObject("ADODB.Stream")
   stream.Open
   stream.Type = 1 ''adTypeBinary
   stream.Write byteArray

   Set stream2 = CreateObject("ADODB.Stream")
   stream2.Open
   stream2.Type = 1 ''adTypeBinary
   stream2.LoadFromFile sourcePath
   stream2.CopyTo stream, -1
   stream.Position = 0

   Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
   xmlHttp.open "POST", siteUrl + "/_vti_bin/_vti_aut/author.dll", false, userName, password
   xmlhttp.setRequestHeader "Content-Type","application/x-vermeer-urlencoded"
   xmlhttp.setRequestHeader "X-Vermeer-Content-Type","application/x-vermeer-urlencoded"
   xmlhttp.setRequestHeader "User-Agent", "FrontPage"
   xmlHttp.send stream

   If xmlHttp.status = 200 Then

       If Instr(xmlHttp.responseText, "successfully") = 0 Then

          MsgBox "ERROR: " & vbCrLf & xmlHttp.responseText       

       Else

          ''Checkin

          strHeader = "method=checkin+document%3a12.0.4518.1016" + _
             "&service_name=%2f" + _
             "&document_name=" & Escape(docName) + _
             "&comment=" + Escape(checkincomment) + _
             "&keep%5fchecked%5fout=false" + vbLf

          Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
          xmlHttp.open "POST", siteUrl + "/_vti_bin/_vti_aut/author.dll", false, userName, password
          xmlhttp.setRequestHeader "Content-Type","application/x-vermeer-urlencoded"
          xmlhttp.setRequestHeader "X-Vermeer-Content-Type","application/x-vermeer-urlencoded"
          xmlhttp.setRequestHeader "User-Agent", "FrontPage"
          xmlHttp.send strHeader



       End If

   End If

   If xmlHttp.status / 100 <> 2 Then
      MsgBox "ERROR: status = " & xmlHttp.status & vbCrLf & xmlHttp.responseText
   End If

End Sub

UploadFile "C:\Users\myusername\Desktop\Test File.zip", _
    "http://computername/Sites/sitename", _
    "Requirements/Test File.zip", _
    "Test title", _
    "Test checkin comment", _
    "MYDOMAIN\myusername", "mypassword"
MsgBox "Done"
函数StringToByteArray(str)
Set stream=CreateObject(“ADODB.stream”)
小溪,打开
stream.Type=2''adTypeText
stream.Charset=“ascii”
stream.WriteText str
stream.Position=0
stream.Type=1''adTypeBinary
StringToByteArray=stream.Read()
关闭
端函数
子上载文件(源路径、站点URL、文档名、标题、检查注释、用户名、密码)
strHeader=“method=put+文档%3a12.0.4518.1016”+_
“&服务名称=%2f”+_
“&document=[document_name=“+Escape(docName)+_
“元信息=[vti_标题%3bSW%7c”+转义(标题)+“]]”_
“&put_option=overwrite,createdir,migrationsemantics”+_
“&comment=“+_
“&保持%5fchecked%5fout=false”+vbLf
bytearray=StringToByteArray(strHeader)
Set stream=CreateObject(“ADODB.stream”)
小溪,打开
stream.Type=1''adTypeBinary
stream.Write byteArray
Set stream2=CreateObject(“ADODB.Stream”)
2.开放
stream2.Type=1''adTypeBinary
stream2.LoadFromFile源路径
stream2.CopyTo流,-1
stream.Position=0
设置xmlHttp=CreateObject(“MSXML2.xmlHttp”)
xmlHttp.open“POST”,siteUrl+“/\u vti\u bin/\u vti\u aut/author.dll”,false,用户名,密码
xmlhttp.setRequestHeader“内容类型”、“应用程序/x-vermeer-urlencoded”
xmlhttp.setRequestHeader“X-Vermeer-Content-Type”、“application/X-Vermeer-urlencoded”
xmlhttp.setRequestHeader“用户代理”、“FrontPage”
xmlHttp.send流
如果xmlHttp.status=200,则
如果Instr(xmlHttp.responseText,“成功”)=0,则
MsgBox“错误:&vbCrLf&xmlHttp.responseText
其他的
“签入
strHeader=“方法=签入+文档%3a12.0.4518.1016”+_
“&服务名称=%2f”+_
“&document_name=“&Escape(docName)+_
“&comment=“+Escape(checkincomment)+_
“&保持%5fchecked%5fout=false”+vbLf
设置xmlHttp=CreateObject(“MSXML2.xmlHttp”)
xmlHttp.open“POST”,siteUrl+“/\u vti\u bin/\u vti\u aut/author.dll”,false,用户名,密码
xmlhttp.setRequestHeader“内容类型”、“应用程序/x-vermeer-urlencoded”
xmlhttp.setRequestHeader“X-Vermeer-Content-Type”、“application/X-Vermeer-urlencoded”
xmlhttp.setRequestHeader“用户代理”、“FrontPage”
xmlHttp.send strHeader
如果结束
如果结束
如果xmlHttp.status/100 2,则
MsgBox“ERROR:status=“&xmlHttp.status&vbCrLf&xmlHttp.responseText
如果结束
端接头
上载文件“C:\Users\myusername\Desktop\Test File.zip”_
"http://computername/Sites/sitename", _
“需求/测试文件.zip”_
“测试标题”_
“测试签入注释”_
“MYDOMAIN\myusername”、“mypassword”
MsgBox“完成”

我需要感谢fmunkert解决了这个问题:

不完全确定您运行的是哪个sharepoint server版本。。。。或者,通过在这个特定的例子中应用这个方法将是成功的,但是这里有一个测试源代码可以尝试

签入方法将签入当前文档。签入释放 签出文档时放置在文档上的编辑保留 并更新文档的内容


到目前为止你试过什么?如果你发布一些你已经尝试过的代码,你会得到更好的回复。@PaulStock你好,Paul,我用一个示例代码更新了我最初的帖子。为了进一步说明,新上传文档的默认状态为“签出”,只能由其他用户以只读方式打开。我想做的是在我的脚本中加入一个例程,将文档设置为可编辑(其他用户可以签出)。为此,尽管这可能令人尴尬,但我不知道。如果您或其他人能提供任何帮助,我们将不胜感激。谢谢。大家好,非常感谢你们的想法。现在我有事情要做@Rich,出于某种原因,我无法实例化“CDO.KnowledgeVersion”。我得到的错误是“ActiveX组件无法创建对象:'CDO.KnowledgeVersion'”。是的,它可能太旧了@Cam的选择是最近的。
Dim URL, objXMLHTTP, objADOStream
Dim content, Version

URL = "http://portal/projects/"
Set objXMLHTTP = CreateObject("Msxml2.ServerXMLHTTP.3.0")
Set objADOStream = CreateObject("ADODB.Stream")
    With objADOStream
        .Open
        .Type = 1
        .LoadFromFile ("C:\VBScripts\SP\2014_Test_IC.txt")
    End With
Set Version = CreateObject("CDO.KnowledgeVersion")
Version.Checkin URL & "2014_Test_IC.txt"
content = objADOStream.Read
objXMLHTTP.open "PUT",URL & "2014_Test_IC.txt",False,"Username","Password"
objXMLHTTP.send content
WScript.Echo objXMLHTTP.status & ":" & objXMLHTTP.statusText
objADOStream.Close