Копировать документ Word между библиотеками документов в разных дочерних сайтах (SharePoint)

Каков наилучший (субъективный... я знаю. Извините!) Способ побудить пользователя скопировать экземпляр документа из моей библиотеки в библиотеку на его собственном сайте (в том же семействе сайтов, если это имеет значение)? Я - администратор с несколькими документами из слов, которые я создаю слишком часто, чтобы задавать определенные типы контента. Поэтому я создал библиотеку, которая содержит несколько шаблонов слов для их копирования (самое главное: включены метаданные, за исключением измененных / созданных полей).

Я попробовал несколько методов javascript/jquery, которые я поместил бы в форму отображения с текстовым полем, позволяющим им вводить URL своей библиотеки и сколько копий они хотели бы сделать, но, похоже, я не работаю хотел бы. Что было бы наиболее эффективным способом достижения этого? Используете обработчик событий? Если так, есть ли способ связать одну из них с пользовательской кнопкой на ленте (я только связал эти кнопки для функций js)?

Пример функции javascript, которую я пытался использовать:

function copyItem() {
    var itemurl = $("#copyFrom").val();
    var dst = $("#copyTo").val();

    $().SPServices({
        operation: "GetItem",
        Url: itemurl,
        async: false,
        completefunc: function (xData, Status) {
            itemstream = $(xData.responseXML).find("Stream").text();
            itemfields = "";
            $(xData.responseXML).find("FieldInformation").each(function(){
                itemfields+=$(this).get(0).xml;
            });;

        }
    });

    $().SPServices({
        operation: "CopyIntoItems",
        SourceUrl: itemurl,
        async: false,
        DestinationUrls: [dst],
        Stream: itemstream,
        Fields:itemfields,
        completefunc: function (xData, Status) {
            var error = $(xData.responseXML).find("CopyResult").first().attr("ErrorCode");
        }
    }
}

вызвано:

  <label>from:</label><input type="text" value="" id="copyFrom" maxlength="255">
    <label>to:</label><input type="text" value="" id="copyTo" maxlength="255">
    <input type="button" onclick="copyItem();" value="Copy">

примечание: я не вводю никаких значений в эти текстовые поля прямо сейчас, так как я вручную ввожу их в itemurl и dst. Но консоль говорит:

Значение свойства copyItem является нулевым или неопределенным, а не объектом Function.

1 ответ

Не рекомендуется использовать "async:false". Лучше сделать асинхронный вызов и вставить свой второй SPServices в первый.

Кроме того, для вашего второго отсутствует закрывающая скобка SPServices,

И, наконец, "Поля" должны быть массивом ( http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems.aspx).

Я попробовал приведенный ниже код, и он работал для меня:

var srcurl="http://my.sharepoint.com/aymeric_lab/Shared%20Documents/879258.jpeg";
var desturl="http://my.sharepoint.com/aymeric_lab/Shared%20Documents/879258_copy.jpeg";
$().SPServices({
  operation: "GetItem",
  Url: srcurl,
  completefunc: function (xData, Status) {
    var itemstream = $(xData.responseXML).find("Stream").text();
    var itemfields = [];
    $(xData.responseXML).find("FieldInformation").each(function(){
      itemfields.push($(this).get(0).xml);
    });

    $().SPServices({
      operation: "CopyIntoItems",
      SourceUrl: srcurl,
      DestinationUrls: [ desturl ],
      Stream: itemstream,
      Fields:itemfields,
      completefunc: function (xData, Status) {

      }
    })
  }
});
Другие вопросы по тегам