尝试使用Javascript在Sharepoint中读取文件的内容

时间:2019-10-29 19:12:15

标签: javascript jquery html sharepoint

我已成功将带有jQuery的javascipt嵌入到SharePoint中的页面中,并且我正在尝试编写一个函数,该函数在加载时被调用,该函数从已上传到SharePoint库中的excel文件中获取数据,以便使用JavaScript对其进行操作,然后将其推送到SharePoint列表中。我的问题来自第一部分。我尝试使用以下代码执行此操作,该代码是从SharePoint文档中获得的,并经过修改以使用“ .fail”功能而不是不建议使用的“ .error”功能:

function readFile() {
    var clientContext;
    var oWebsite;
    var fileUrl;

    clientContext = new SP.ClientContext.get_current();
    oWebsite = clientContext.get_web();

    clientContext.load(oWebsite);
    clientContext.executeQueryAsync(function () {
        fileUrl = "My file's url as obtained from SharePoint";

        $.ajax({
            url: fileUrl,
            type: "GET"
        })
            .done(Function.createDelegate(this, successHandler))
            .fail(Function.createDelegate(this, errorHandler));
    }, errorHandler);

    function successHandler(data) {
        console.log(data);
    }

    function errorHandler() {
        console.log("Request failed: " + arguments[2]);
    }
}

这似乎起作用,因为我没有收到任何错误,并且数据确实显示在控制台中。但是,我看到的不是文件的内容,而是:

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
	<meta name='viewport' content='width=device-width, initial-scale=1' />
	<meta name='robots' content='noindex' />
	<link rel="shortcut icon" href="http://spoos-16-rdn.bankofamerica.com/wv/resources/1033/FavIcon_Word.ico" />
	<title>Document.docx</title>
	
	<script type="text/javascript">
	   var WOPIPerf_UserClick = null;
	   if (window.sessionStorage)
	   {
		   WOPIPerf_UserClick = window.sessionStorage.getItem("WOPIPerf_UserClickTime");
		   window.sessionStorage.removeItem("WOPIPerf_UserClickTime");
	   }
	</script>
	
	<script type="text/javascript">
function ULS6zp(){var o=new Object;o.ULSTeamName="Microsoft SharePoint Foundation";o.ULSFileName="WOPIFrame.aspx";return o;}
		function getWopiIFrameElement()
		{ULS6zp:;
			return document.querySelector("iframe[name=WebApplicationFrame]");
		}
		function WACRedirector()
		{ULS6zp:;
			var myFrame = getWopiIFrameElement();
			myFrame.id = "WebAp

我不确定发生了什么,但是我觉得这里缺少一个步骤。当我在浏览器中输入url时,它将重定向到SharePoint的内部文档编辑器,在这里我确实可以看到文档的内容甚至进行编辑。要在JavaScript中获取文件的实际内容,我还需要做其他事情吗?

2 个答案:

答案 0 :(得分:0)

您需要使用文件的URL,而不是Office Online的查看器/编辑器的URL。直接网址应如下所示:

https://yourDomain/sites/yourSite/yourLibrary/yourFileName.xlsx

https://yourDomain/sites/yourSite/yourLibrary/yourFolder/yourFileName.xlsx

在浏览器中输入后,该URL应该开始下载。

答案 1 :(得分:0)

我找到了答案:查询URL需要利用SharePoint中内置的ExcelRest API。为此,我只需要按照以下方式将“ /_vti_bin/ExcelRest.aspx/”添加到URL:

https://yourDomain/sites/yourSite/yourLibrary/_vti_bin/ExcelRest.aspx/yourFolder/yourFileName.xlsx