Установка значений для разных типов полей SharePoint с помощью JSOM

Бывают говорящие за себя примеры кода. Данная статья является примером, охватывающим установку значений для типов полей (колонок) списков и библиотек документов SharePoint.


function createListItem() {  
   var clientContext = new SP.ClientContext.get_current();  
   var oList = clientContext.get_web().get_lists().getByTitle('TestList');  
   var itemCreateInfo = new SP.ListItemCreationInformation();  
   this.oListItem = oList.addItem(itemCreateInfo);

   // Single line of text  
   oListItem.set_item('Title', 'New Item'); 
 
   // Single Choice  
   oListItem.set_item('FieldChoiceDrop', 'Enter Choice #1');  
   
   // Multi Choice  
   var fieldChoiceMultiArray = new Array("Enter Choice #1","Enter Choice #2");    
   oListItem.set_item('FieldChoiceMulti', fieldChoiceMultiArray);

   // Single Lookup  
   var fieldLookupSingle = new SP.FieldLookupValue();  
   fieldLookupSingle.set_lookupId(2);  
   oListItem.set_item('FieldLookup', fieldLookupSingle);  

   // Multi Lookup  
   var lookupsIds = [1,2];  
   var lookups = [];  
   for (var ii in lookupsIds) {  
      var lookupValue = new SP.FieldLookupValue();  
      lookupValue.set_lookupId(lookupsIds[ii]);  
      lookups.push(lookupValue);  
   }  
   oListItem.set_item('FieldLookupMulti', lookups);
  
   // Yes=1 / No=0  
   oListItem.set_item('FieldYesNo', 1);  

   // Single Person  
   var singleUser = SP.FieldUserValue.fromUser('John Doe');  
   oListItem.set_item('FieldPersonSingle', singleUser);  
   
   // Multi Person  
   var fieldUserMultiArray = new Array("john@domain.com","John Doe","domainjohn");  
   var lookups = [];  
   for (var ii in fieldUserMultiArray) {  
      var lookupValue = SP.FieldUserValue.fromUser(fieldUserMultiArray[ii]);  
      lookups.push(lookupValue);  
   }  
   oListItem.set_item('FieldPersonMulti', lookups); 
 
   // Managed Single  
   var field = oList.get_fields().getByInternalNameOrTitle("FieldManagedSingle");  
   var taxField = clientContext.castTo(field, SP.Taxonomy.TaxonomyField);  
   var taxonomySingle = new SP.Taxonomy.TaxonomyFieldValue();  
   taxonomySingle.set_label("UK");  
   taxonomySingle.set_termGuid("3BD553C4-040E-4584-8B0C-3AB1A00D39A6");  
   taxonomySingle.set_wssId(-1);  
   taxField.setFieldValueByValue(oListItem, taxonomySingle);

   // Managed Multi  
   var field = oList.get_fields().getByInternalNameOrTitle("FieldManagedMulti");  
   var taxField = clientContext.castTo(field, SP.Taxonomy.TaxonomyField);  
   var terms = new SP.Taxonomy.TaxonomyFieldValueCollection(clientContext,getMultiTax(),taxField);  
   taxField.setFieldValueByValueCollection(oListItem, terms);  
  
   // Hyperlink or Picture  
   var hyperLink = new SP.FieldUrlValue();  
   hyperLink.set_url("http://www.discovery.com");  
   hyperLink.set_description("Discovery Channel");  
   oListItem.set_item('FieldHyperLink', hyperLink);
  
   // Currency  
   oListItem.set_item('FieldCurrency', '100.50');
  
   // DateTime (date only) 
   oListItem.set_item('FieldDateTimeDateOnly', '09/18/2014'); 

   // DateTime (with time)
   var date = new Date(2014, 8, 18, 5, 23, 30);
   var isoDate = clientContext.get_web().get_regionalSettings().get_timeZone()
                              .localTimeToUTC(date.toISOString());
   // isoDate - 2014-09-18T01:23:30.000Z
   oListItem.set_item('FieldDateWithTime', isoDate); 
 
   // MultiLine text  
   oListItem.set_item('FieldMultiText', '<p><strong>HTML</strong> текст</p>');
  
   oListItem.update();  
   clientContext.load(oListItem);  
   clientContext.executeQueryAsync(  
     Function.createDelegate(this, this.onQuerySucceeded),   
     Function.createDelegate(this, this.onQueryFailed)  
   );  
 }

function getMultiTax(){  
      var terms = new Array();  
      terms.push("-1;#UK|3BD553C4-040E-4584-8B0C-3AB1A00D39A6");  
      terms.push("-1;#AU|C0FCC1DF-181B-4F1F-9531-25D2A61F5147");  
      return terms.join(";#");  
}

function onQuerySucceeded() {
    SP.UI.Notify.addNotification('Элемент создан: ' + oListItem.get_id());
}

function onQueryFailed(sender, args) {
    console.log('Ошибка. ' + args.get_message() + '; ' + args.get_stackTrace());
}

В качестве источника использована статья Peter Dotsenko, уж очень она приглянулась.


Опубликовано: 18.09.2014
Автор: Андрей Кольтяков