{"id":792,"date":"2011-12-21T17:12:45","date_gmt":"2011-12-21T16:12:45","guid":{"rendered":"http:\/\/blog.kodono.info\/wordpress\/?p=792"},"modified":"2013-04-05T10:41:40","modified_gmt":"2013-04-05T08:41:40","slug":"creer-un-fichier-dans-une-librairie-sharepoint-grace-au-web-service-en-javascript","status":"publish","type":"post","link":"https:\/\/blog.kodono.info\/wordpress\/2011\/12\/21\/creer-un-fichier-dans-une-librairie-sharepoint-grace-au-web-service-en-javascript\/","title":{"rendered":"Cr\u00e9er un fichier dans une librairie Sharepoint gr\u00e2ce au web service Copy.asmx [Javascript]"},"content":{"rendered":"<p><strong>EDIT:<\/strong> J&#8217;ai cr\u00e9\u00e9 une API JavaScript pour Sharepoint qui g\u00e8re la cr\u00e9ation de fichier. Vous pouvez la consulter l\u00e0 : <a href=\"http:\/\/aymkdn.github.com\/SharepointPlus\/symbols\/%24SP%28%29.html#.createFile\">http:\/\/aymkdn.github.com\/SharepointPlus\/symbols\/%24SP%28%29.html#.createFile<\/a><\/p>\n<p>Saviez-vous qu&#8217;il est possible de cr\u00e9er un document de toute pi\u00e8ce et de l&#8217;ajouter dans une librairie (&#8220;Shared Document&#8221;) de Sharepoint seulement avec Javascript ?<\/p>\n<p>Pour cela nous utiliserons le web service &#8220;copy.asmx&#8221; avec la fonction &#8220;CopyIntoItems&#8221;.<br \/>\nSi vous pointez vers l&#8217;adresse <strong>http:\/\/votre_sharepoint\/_vti_bin\/copy.asmx?op=CopyIntoItems<\/strong> vous remarquerez qu&#8217;on vous fournit un certain nombre de d\u00e9tails quant aux informations qu&#8217;il faut envoyer. Malheureusement c&#8217;est plut\u00f4t tr\u00e8s mal document\u00e9, surtout pour Javascript&#8230;<\/p>\n<p>Voici donc la solution pour cr\u00e9er un fichier, par exemple un fichier Excel (en .xls) dans lequel on va mettre un tableau HTML banal et qui sera enregistr\u00e9 (dans notre exemple) dans la librairie &#8220;http:\/\/votre_sharepoint\/Shared Documents\/&#8221; (\u00e0 noter que j&#8217;utilise jQuery pour la requ\u00eate ajax).<\/p>\n<pre class=\"brush: javascript\">\r\n\/\/ le contenu de notre fichier doit \u00eatre encod\u00e9 en Base64. Pour cela j'utilise la fonction disponible sur mon blog (http:\/\/blog.kodono.info\/wordpress\/2011\/07\/27\/midi-code-encoder-decoder-en-base64-pour-javascript-programmation\/)\r\nfunction encode_b64(a,b,c,d,e,f){b=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+\/\";c='=';for(d=f='';e&#038;=3,a.charAt(d++)||(b=';=',e);f+=b.charAt(63&#038;c>>++e*2))c=c&lt;&lt;8|a.charCodeAt(d-=!e);return f}\r\n\r\n\/\/ Notre fonction qu'on va appeler &quot;Upload&quot;\r\n\/\/ txtContent est du plain text qui est donc le contenu de notre fichier\r\n\/\/ destinationUrl est l&apos;URL compl\u00e8te vers la librairie o\u00f9 le fichier va \u00eatre stock\u00e9 (avec le nom du fichier \u00e0 cr\u00e9er)\r\nfunction Upload(txtContent, destinationUrl) {\r\n    var jsStream = encode_b64(txtContent);\r\n    var soapEnv  = &quot;&lt;?xml version=\\&quot;1.0\\&quot; encoding=\\&quot;utf-8\\&quot;?>&quot;\r\n                  +&quot;&lt;soap:Envelope xmlns:xsi=\\&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance\\&quot; xmlns:xsd=\\&quot;http:\/\/www.w3.org\/2001\/XMLSchema\\&quot; xmlns:soap=\\&quot;http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\\&quot;>&quot;\r\n                  +&quot;&lt;soap:Body>&quot;\r\n                  +&quot;&lt;CopyIntoItems xmlns=\\&quot;http:\/\/schemas.microsoft.com\/sharepoint\/soap\/\\&quot;>&quot;\r\n                  +&quot;&lt;SourceUrl>http:\/\/null&lt;\/SourceUrl>&quot;\r\n                  +&quot;&lt;DestinationUrls>&lt;string>&quot;+destinationUrl+&quot;&lt;\/string>&lt;\/DestinationUrls>&quot;\r\n                  +&quot;&lt;Fields>&lt;FieldInformation Type=&apos;File&apos; \/>&lt;\/Fields>&quot;\r\n                  +&quot;&lt;Stream>&quot;+jsStream+&quot;&lt;\/Stream>&quot;\r\n                  +&quot;&lt;\/CopyIntoItems>&quot;\r\n                  +&quot;&lt;\/soap:Body>&quot;\r\n                  +&quot;&lt;\/soap:Envelope>&quot;;\r\n    jQuery.ajax({\r\n        url: &quot;http:\/\/votre_sharepoint\/_vti_bin\/copy.asmx&quot;,\r\n        type: &quot;POST&quot;,\r\n        dataType: &quot;xml&quot;,\r\n        data: soapEnv,\r\n        beforeSend: function(xhr) { xhr.setRequestHeader(&apos;SOAPAction&apos;, &apos;http:\/\/schemas.microsoft.com\/sharepoint\/soap\/CopyIntoItems&apos;); },\r\n        contentType: &quot;text\/xml; charset=\\&quot;utf-8\\&quot;&quot;\r\n    });\r\n}\r\n\r\nUpload(\"&lt;html>&lt;table>&lt;tr>&lt;th>Colonne 1&lt;\/th>&lt;th>Colonne B&lt;\/th>&lt;\/tr>&lt;tr>&lt;td>Total:&lt;\/td>&lt;td>1500&lt;\/td>&lt;\/tr>&lt;\/table>&lt;\/html>\",\"http:\/\/votre_sharepoint\/Shared Documents\/test.xls\");\r\n<\/pre>\n<p>Ensuite si vous cliquez sur le fichier &#8220;test.xls&#8221; nouvellement cr\u00e9\u00e9, votre navigateur va vouloir l&#8217;ouvrir avec Excel. Celui-ci va vous donner un warning, mais il suffit d&#8217;accepter et votre tableau va apparaitre dans votre Excel !<br \/>\nBien sur on peut cr\u00e9er tout type de fichier (.txt, .jpg, .doc, etc) et avec le contenu que l&#8217;on souhaite.<\/p>\n<p>Liens additionnels:<\/p>\n<ul>\n<li><a href=\"http:\/\/blog.stuartwhiteford.com\/?p=86\">http:\/\/blog.stuartwhiteford.com\/?p=86<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/7976329\/sharepoint-copyintoitems-soap-message-in-objective-c\">http:\/\/stackoverflow.com\/questions\/7976329\/sharepoint-copyintoitems-soap-message-in-objective-c<\/a><\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/copy.copy.copyintoitems%28v=office.12%29.aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/copy.copy.copyintoitems%28v=office.12%29.aspx<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>EDIT: J&#8217;ai cr\u00e9\u00e9 une API JavaScript pour Sharepoint qui g\u00e8re la cr\u00e9ation de fichier. Vous pouvez la consulter l\u00e0 : http:\/\/aymkdn.github.com\/SharepointPlus\/symbols\/%24SP%28%29.html#.createFile Saviez-vous qu&#8217;il est possible de cr\u00e9er un document de toute pi\u00e8ce et de l&#8217;ajouter dans une librairie (&#8220;Shared Document&#8221;) de Sharepoint seulement avec Javascript ? Pour cela nous utiliserons le web service &#8220;copy.asmx&#8221; avec [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","hide_page_title":"","footnotes":""},"categories":[13,33],"tags":[24,117],"class_list":["post-792","post","type-post","status-publish","format-standard","hentry","category-niveau-intermediaire","category-programmation","tag-javascript","tag-sharepoint"],"_links":{"self":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/comments?post=792"}],"version-history":[{"count":18,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/792\/revisions"}],"predecessor-version":[{"id":1219,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/792\/revisions\/1219"}],"wp:attachment":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/media?parent=792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/categories?post=792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/tags?post=792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}