如何在 SharePoint Online/Office 365 中使用 SharePoint 托管应用程序配置品牌文件?
How to provision Branding files using SharePoint Hosted App in SharePoint Online/Office 365?
我正在寻找 SharePoint 托管应用程序解决方案,它将提供品牌文件 (JS/CSS/Images) 到 SharePoint Online/Office365环境.
我得到了一篇非常好的文章来实现这一点,并尝试实现如下所示的相同内容 link:http://www.sharepointnutsandbolts.com/2013/05/sp2013-host-web-apps-provisioning-files.html
此解决方案对我不起作用,在执行应用程序时,出现以下错误:
Failed to provision file into host web. Error: Unexpected response data from server.
这是给我错误的代码:
// utility method for uploading files to host web..
uploadFileToHostWebViaCSOM = function (serverRelativeUrl, filename, contents) {
var createInfo = new SP.FileCreationInformation();
createInfo.set_content(new SP.Base64EncodedByteArray());
for (var i = 0; i < contents.length; i++) {
createInfo.get_content().append(contents.charCodeAt(i));
}
createInfo.set_overwrite(true);
createInfo.set_url(filename);
var files = hostWebContext.get_web().getFolderByServerRelativeUrl(serverRelativeUrl).get_files();
hostWebContext.load(files);
files.add(createInfo);
hostWebContext.executeQueryAsync(onProvisionFileSuccess, onProvisionFileFail);
}
请给我建议,这段代码可能有什么问题?或者建议我另一个 way/reference,我可以在其中创建 SharePoint 托管的应用程序来配置品牌文件。
提前致谢!
我会使用不同的方法来访问主机 Web 上下文,如下所示:
//first get app context, you will need it.
var currentcontext = new SP.ClientContext.get_current();
//then get host web context
var hostUrl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
var hostcontext = new SP.AppContextSite(currentcontext, hostUrl);
function getQueryStringParameter(param) {
var params = document.URL.split("?")[1].split("&");
var strParams = "";
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == param) {
return singleParam[1];
}
}
}
这里有一些参考:
https://sharepoint.stackexchange.com/questions/122083/sharepoint-2013-app-create-list-in-host-web
http://www.mavention.com/blog/sharePoint-app-reading-data-from-host-web
http://www.sharepointnadeem.com/2013/12/sharepoint-2013-apps-access-data-in.html
此外,这是一个如何部署母版页的示例,但是您在测试期间可能会注意到,用于获取主机 Web 上下文的方法与视频中显示的不一样,您应该使用我使用的方法之前描述过。
https://www.youtube.com/watch?v=wtQKjsjs55I
最后,这是一个如何使用 CSOM 通过控制台应用程序部署品牌文件的示例,如果您足够聪明,您将能够将其转换为 JSOM。
我正在寻找 SharePoint 托管应用程序解决方案,它将提供品牌文件 (JS/CSS/Images) 到 SharePoint Online/Office365环境.
我得到了一篇非常好的文章来实现这一点,并尝试实现如下所示的相同内容 link:http://www.sharepointnutsandbolts.com/2013/05/sp2013-host-web-apps-provisioning-files.html
此解决方案对我不起作用,在执行应用程序时,出现以下错误:
Failed to provision file into host web. Error: Unexpected response data from server.
这是给我错误的代码:
// utility method for uploading files to host web..
uploadFileToHostWebViaCSOM = function (serverRelativeUrl, filename, contents) {
var createInfo = new SP.FileCreationInformation();
createInfo.set_content(new SP.Base64EncodedByteArray());
for (var i = 0; i < contents.length; i++) {
createInfo.get_content().append(contents.charCodeAt(i));
}
createInfo.set_overwrite(true);
createInfo.set_url(filename);
var files = hostWebContext.get_web().getFolderByServerRelativeUrl(serverRelativeUrl).get_files();
hostWebContext.load(files);
files.add(createInfo);
hostWebContext.executeQueryAsync(onProvisionFileSuccess, onProvisionFileFail);
}
请给我建议,这段代码可能有什么问题?或者建议我另一个 way/reference,我可以在其中创建 SharePoint 托管的应用程序来配置品牌文件。
提前致谢!
我会使用不同的方法来访问主机 Web 上下文,如下所示:
//first get app context, you will need it.
var currentcontext = new SP.ClientContext.get_current();
//then get host web context
var hostUrl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
var hostcontext = new SP.AppContextSite(currentcontext, hostUrl);
function getQueryStringParameter(param) {
var params = document.URL.split("?")[1].split("&");
var strParams = "";
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == param) {
return singleParam[1];
}
}
}
这里有一些参考:
https://sharepoint.stackexchange.com/questions/122083/sharepoint-2013-app-create-list-in-host-web
http://www.mavention.com/blog/sharePoint-app-reading-data-from-host-web
http://www.sharepointnadeem.com/2013/12/sharepoint-2013-apps-access-data-in.html
此外,这是一个如何部署母版页的示例,但是您在测试期间可能会注意到,用于获取主机 Web 上下文的方法与视频中显示的不一样,您应该使用我使用的方法之前描述过。
https://www.youtube.com/watch?v=wtQKjsjs55I
最后,这是一个如何使用 CSOM 通过控制台应用程序部署品牌文件的示例,如果您足够聪明,您将能够将其转换为 JSOM。