вторник, 11 августа 2020 г.

Shared folder для внешних сотрудников с помощью WorkFlow (SharePoin Online)

 

Не так давно появилась задача бизнеса шарить файлы с партнерами и что бы всем партнерам приходили оповещения о изменении файла.

Мы взвесили все за и против и решили, что делится файлами будет удобнее чем заводить внешних пользователей себе, тратить на них лицензию. Да и первый вход внешнего сотрдника через создание новой записи MS, подтверждение не так удобен пользователям.

Если достум через Share link не сложный как для бизнеса так и для внешнего сотрудника, то оповещение внешних пользователей о том, что изменился файл в расшариной папке задача оказалась не совсем простая.


Оснойвой решения была статья https://cann0nf0dder.wordpress.com/2018/04/04/externally-sharing-getsharinginformation-rest-api/. Я настроил процес который брал все внешние email начиная от самого файла и заканчивая верхней папкой. Проект запустили, но у бизнеса возникла потребность шарить с новыми партнерами. И вся сложность в том, что уже стало сложно отслеживать с кем уже расшарили папку, а с кем нет, ведь внешних пользователей 100+.
Как решение было создать новый List (ExternalEmails) и в нем настроить WorkFlow которое будет отправлять приглашения при добавлении новой почты.

Посмотрев Network я увидел запрос


/_api/web/Lists(@a1)/GetItemById(@a2)/ShareLink?@a1=%27 ListGuid  %27&@a2=%27 Item Id %27

Json

 {"request":
	{
		"createLink":true,
		"settings":{
			"linkKind":6,
			"expiration":null,
			"role":2,
			"restrictShareMembership":true,
			"updatePassword":false,
			"password":""
		},
		"peoplePickerInput":"[{
				"Key":"externalEmail@mail.ru",
				"DisplayText":"externalEmail@mail.ru",
				"IsResolved":true,
				"Description":"externalEmail@mail.ru",
				"EntityType":"",
				"EntityData":{
					"SPUserID":"externalEmail@mail.ru",
					"Email":"externalEmail@mail.ru",
					"IsBlocked":"False",
					"PrincipalType":"UNVALIDATED_EMAIL_ADDRESS",
					"AccountName":"externalEmail@mail.ru",
					"SIPAddress":"externalEmail@mail.ru",
					"IsBlockedOnODB":"False"
				},
				"MultipleMatches":[],
				"ProviderName":"",
				"ProviderDisplayName":""
				}]",
		"emailData":{
			"body":"",
			"subject":""
		}
	}
}

В процессе сложнее всего создать вложенность объектов JSON.

Весь процесс выглядит так

переменная url


далее переменная EntityData











переменная emailData


переменная peoplePickerInput







переменная settingsJSON







переменная requestData






переменная request
выполняем запрос post

Теперь пользователи могут выгрузить в Excel все email с которыми поделились папкой и так же им проще стало понимать с какими партнерами еще не поделились папкой.

 

Комментариев нет:

Отправить комментарий