2017-02-01 100 views
0

HTMLとJavaScriptを使用していくつかのWebページを作成しており、最終結果を特定のSharePointリストにアップロードする必要があります。私はこれを行う方法のトンの詳細を発見したが、1日目から私は1つの問題だけで立ち往生しています。私はリンクの下のhteで与えられるすべての可能な組み合わせを試しました。JavaScriptを使用したSharePointリストの更新

Link

しかし、私は同じエラーを持ち続ける一日の終わり。 'SP'は未定義です。

少し前提をつけてください。私はWebページを作成しており、Webページは共有サイトのSharePointサイトに保存されています。ここで、特定のSharePointサイトの共有フォルダにある特定の格納されたWebページを直接開くリンクをクリックするためのハイパーリンクがエンドユーザーに提供されます。以下はそのコードです。私は本当に小さいものを見逃すかもしれないことを知っています。

<html> 
<head> 
<SCRIPT LANGUAGE="JavaScript"> 
function preparePage() 
{ //Hide Execution lead 
if(document.getElementById("ExeLead").style.display=='none'){ 
document.getElementById("ExeLead").style.display = ''; 
} 
else { 
document.getElementById("ExeLead").style.display = 'none'; 
} 
getDetails(); 
} 

function getParam(name)//to get details that is passed via url 
{ 
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
var regexS = "[\\?&]"+name+"=([^&#]*)"; 
var regex = new RegExp(regexS); 
var results = regex.exec(window.location.href); 
results[1] = results[1].replace(/%20/g," "); 
if(results == null) 
    return "NA"; 
else  
    return results[1]; 
} 

function getDetails()//extract info form URL 
{ 
frmUpdates.txtBIStatus.value=getParam("Status"); 
frmUpdates.txtBINumber.value=getParam("BINo");  
} 

var siteUrl = 'Url to the SharePoint site'; 
SP.SOD.executeFunc("sp.js", createListItem()); 
/*if(!SP.SOD.executeOrDelayUntilScriptLoaded(createListItem, 'sp.js')){ 
LoadSodByKey('sp.js'); 
};*/ 
//LoadSodByKey('sp.js'); 


function createListItem() { 

var clientContext = new SP.ClientContext(siteUrl); 
var oList = clientContext.get_web().get_lists().getByTitle('Announcements'); 

var itemCreateInfo = new SP.ListItemCreationInformation(); 
this.oListItem = oList.addItem(itemCreateInfo); 

oListItem.set_item('IdeaRef', 'My New Item'); 
oListItem.set_item('Status', 'Hello World!'); 

oListItem.update(); 

clientContext.load(oListItem); 

clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
} 

function onQuerySucceeded() { 
alert('Item created: ' + oListItem.get_id()); 
} 

function onQueryFailed(sender, args) { 
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 

</Script> 
<title>Tool</title> 
</head> 

<body onLoad="preparePage()"> 

<form name="frmUpdates"> 
<table border="5" width="444"> 
<tr> 
<td width="344" height="35" colspan="2">&nbsp;Tool</td> 
</tr> 
<tr> 
<td width="144" height="35">Bright Idea #:</td> 
<td width="300">&nbsp;&nbsp;<input type="text" name="txtBINumber" size="40"></td> 
</tr> 
<tr> 
<td width="144" height="35">Bright Idea Status</td> 
<td width="300">&nbsp;&nbsp;<input type="text" name="txtBIStatus" size="40"></td> 
</tr> 
<tr id="ExeLead"> 
<td width="144" height="35">Assign Execution Lead</td> 
<td width="300" height="35">&nbsp;&nbsp;<input type="text" name="txtExecutionLead" size="40"></td> 
</tr> 
<tr> 
<td width="144" height="35" colspan="2">Comments</td> 
</tr> 
<tr> 
<td width="444" height="150" colspan="2">&nbsp;&nbsp;<textarea rows="8" cols="48" name="txtComments" from="frmComments">Enter your comments here....</textarea></td> 
</tr> 
<tr> 
<td width="444" height="35" colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="Submit" name="btnSubmit" onclick="createListItem()"></td> 
</tr> 
</table> 
</form> 



</body> 

</html> 

メモこのコードを書き、Internet ExplorerのF12を使用してコードの実行方法を確認するには、メモ帳を使用しています。

答えて

0

ダウンロードメモ帳++ atleast :)

私は正しく理解しています。ユーザーはSharePointサイトにアクセスできますか?いくつかのjavascriptを含むCLEAN HTMLファイル(?)をSharedフォルダにアップロードして(サイトにアクセスできない)ユーザーと共有するだけの場合、これはできません。 SP.jsはSharePoint内にロードされます。

このhtml(Sharepointのすべての要素内)でページレイアウトを作成すると、スクリプトも使用できますが、ユーザーは引き続きサイトとリストにアクセスする必要があります。

代わりにSharePointアドインを作成することをお勧めします。

EDIT:

私は(ヘッド/ボディなし)私のdevのサイト上のコンテンツエディターWebパーツ内のコードを試してみた、それが働きました。

これはあなたの問題を解決するものではありませんが、ボタン上でclickイベント(jQueryを使用)を行う必要があります。そうしないと、createListItem()要素で指定した場合でもページロード時にリスト項目が作成されます。ボタンをクリックすると、これはとにかく実行されます:SP.SOD.executeFunc( "sp.js"、yourfunc)。

$("#buttonId").click(function() { 
    SP.SOD.executeFunc("sp.js", createListItem()); 
}); 

または、SP.SOD.executeFunc( "sp.js"、createListItem())の新しい関数を作成します。あなたがonclickで使うもの。

また、リストには、ページライブラリと同じレベルにある場合、あなたはURLを指定する必要はありません

var clientContext = SP.ClientContext.get_current(); 

var clientContext = new SP.ClientContext(siteUrl); 

を交換してみてください。

+0

ありがとう、私はそれをテストしており、私はこのSharePointサイトへの完全なアクセス権を持っています。 WebページはSharePointサイトに保存されます。詳細が必要な場合はお知らせください。 –

+0

SPを書いてみてください。開発ツールのコンソール(IEのF12)で、オプションがあるかどうか確認してください。 – Robin

関連する問題