2016-10-12 81 views
0

我需要在JavaScript中這樣做,因爲整個解決方案是JavaScript中的最新,這是最後一部分。編輯回覆消息(評論)的討論 - SharePoint Online JavaScript

我需要能夠將回復消息(評論)更新爲現有討論。我能夠改變討論區域而不是消息區域。我知道郵件和討論是兩種不同的內容類型,並且回覆郵件位於討論文件夾下,但我不知道如何編輯回覆郵件。 (有一個實用程序可以添加回復消息,但不能編輯它)。

這是一個討論範例(在列表中),其中您可以看到有5個回覆,我想通過JavaScript更改其中一個回覆的正文。

Image of the Discussion Showing Replies I would like to update

再舉例來說,我想改變以下信息:

Image of Replies that I want to change the body text

我曾嘗試使用此代碼更新,但它只是改變了討論,而不是消息。

我有一種感覺,我需要告訴系統進入該文件夾來查找消息並更改其正文文本,但我不知道如何做到這一點,並在interwebs上搜索2天后,我可以沒有找到答案。 碼不起作用: 功能aeditListItem(){

var clientContext = new SP.ClientContext(); 
    var oList = clientContext.get_web().get_lists().getById('40b2fbd4-4f87-d92fb05f8044'); //ID changed to protect client 

    this.oListItem = oList.getItemById(getParameterByName('commentid')); 

    oListItem.set_item('Body', document.getElementById("ideaDetails").value.replace(/\r?\n/g, '<br />')); 

    oListItem.update(); 

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

} 

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

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

非常非常感謝!

回答

0
顯然在該行

this.oListItem = oList.getItemById(getParameterByName('commentid')); 

getParameterByName('commentid')不返回正確的消息ID,確保指定的郵件列表項ID。

作爲概念證明下面的例子說明了如何:

  • 發現通過身體
  • 的消息與一個新的身體

var listTitle = "Discussions"; 
var oldMessageBody = ""; 
var newMessageBody = ""; 

var ctx = SP.ClientContext.get_current(); 
var list = ctx.get_web().get_lists().getByTitle(listTitle); 
var items = list.getItems(createMessageFindQuery('Body',oldMessageBody)); 
ctx.load(items); 
ctx.executeQueryAsync(
    function(){ 

     if(items.get_count() == 1){ 
      var foundItem = items.getItemAtIndex(0); 
      foundItem.set_item('Body',newMessageBody); 
      foundItem.update();  

      ctx.executeQueryAsync(
       function(){ 
        console.log("Updated"); 
       }, 
       function(sender,args){ 
        console.log(args.get_message()); 
       }); 

     } 
     else 
     console.log('Not found or multiple items are found') 
    }, 
    function(sender,args){ 
     console.log(args.get_message()); 
    }); 

}); 


function createMessageFindQuery(fieldName,fieldVal){ 
     var qry = new SP.CamlQuery; 
     qry.set_viewXml(String.format('<View Scope="RecursiveAll"><Query><Where><Contains><FieldRef Name="{0}" /><Value Type="Text">{1}</Value></Contains></Where></Query></View>',fieldName,fieldVal)); 
     return qry; 
} 
+1

替換郵件完美地工作,謝謝你的答案 –