Документерра: руководство пользователя

Массовое создание авторизованных читателей

При необходимости создания нескольких учетных записей авторизованного читателя на портале Документерра данный процесс можно автоматизировать с помощью API. Выполнить это на платформе Windows наиболее простым способом можно с помощью PowerShell. На этой странице предлагается пример скрипта PowerShell и дополнительные инструкции по автоматизации процесса.

Здесь приведен скрипт-код PowerShell, который необходимо сохранить в текстовом файле с расширением .ps1:

Скрипт PowerShell

Bash (Unix Shell)
# Before running the script, you may need to execute this command from a PowerShell console started As Administrator:
# Set-ExecutionPolicy RemoteSigned

cls

# Specify the path to the CSV file with Power Readers information
$prList = Import-Csv $Env:USERPROFILE"\Desktop\PowerReaderList.csv"

# Имя портала
$Server = '_____.clickhelp.co'

# API endpoint URL
$usersEndpointURL = "https://${server}/api/v1/users"

# User credentials to use for API calls
$uName = '__user__login__name__'
$uAPIKey = "__api__key__"

# Set API call headers
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $uName,$uAPIKey)))
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add('Authorization', ("Basic {0}" -f $base64AuthInfo))
$headers.Add('Content-Type', 'application/json')
#$Headers = @{Authorization=("Basic {0}" -f $base64AuthInfo), =}

# Create Power Readers based on the input list
$errCount = 0
$sucCount = 0
$prList | ForEach-Object {
$curUserName = $_.userName
"Creating user: $curUserName"

$body = "{ `"userName`": `"$($_.userName)`", `"userInfo`": {`"email`": `"$($_.email)`", `"firstName`": `"$($_.firstName)`", `"middleName`": `"$($_.middleName)`", `"lastName`": `"$($_.lastName)`"}, `"userRole`": `"$($_.userRole)`", `"isDontSendEmail`": $($_.isDontSendEmail)}"

try
{
$httpResp = Invoke-WebRequest -Headers $headers -Method Post -Uri $usersEndpointURL -Body ([System.Text.Encoding]::UTF8.GetBytes($body))


switch ($httpResp.statuscode)
{
201
{
"Success: user created - $($curUserName)"
$sucCount = $sucCount + 1
}

default
{
"Unknown status code: $($httpResp.statuscode)"
$sucCount = $sucCount + 1
}
}
}
catch
{
$errCount = $errCount + 1
"An error occurred while making the API call"

$errStatusCode = $_.Exception.Response.StatusCode.Value__
$errExceptionMessage = $_.Exception.Message


switch ($errStatusCode)
{
401
{
"Error: authentication failed"
}

409
{
"Error: user creation failed - a user with the same name already exists"
}

default
{
"Error code: $($errStatusCode)"
"Error message:"
$errExceptionMessage

}
}
}
"`n"
}

"`n"
"---------------------------------------------------"
"Execution summary:"
"$($sucCount) user created;"
"$($errCount) errors occurred."
"---------------------------------------------------"
"`n"
"`n"
Read-Host -Prompt "Press Enter to close the window"


В приведенном выше скрипте содержится CSV-файл с данными пользователя. Ниже приведен пример контента такого файла:

Code
userName,email,firstName,middleName,lastName,userRole,isDontSendEmail
marcos,test@test.com,"Marcos Garcia",,Barreno,,true
marcos.garcia,test@test.com,"Marcos Garcia",,Barreno,,true
Важно
Контент CSV-файла, включая ключевое слово "true", чувствителен к регистру.

Ниже приведены шаги по подготовке среды и запуску скрипта PowerShell для импорта авторизованных читателей:

  1. В зависимости от настроек безопасности PowerShell, перед запуском скрипт-файла может потребоваться разрешить запуск неподписанных скриптов на компьютере. Для этого выполните следующие действия:
    • запустите новую консоль PowerShell в режиме Администратора;
    • выполните эту команду:
      Set-ExecutionPolicy RemoteSigned
    • когда система запросит подтверждение, введите Y и нажмите Enter.
  2. Подготовьте CSV-файл с данными пользователя, пример смотри выше.   Несколько замечаний о файле CSV:
    • значения имен и адреса электронной почты должны содержать только латинские символы, без символов Unicode;
    • Последнее значение в каждой строке является переменной boolean flag, оставьте ее как true, если не хотите отправлять подтверждение по электронной почте каждому авторизованному пользователю, или измените его на false, чтобы разрешить автоматическую отправку учетных данных для входа в систему каждому создаваемому пользователю;
    • По умолчанию скрипт будет искать файл "PowerReaderList.csv" на рабочем столе текущего пользователя, при необходимости это можно изменить в коде скрипта.
  3.  Подготовьте свой скрипт PowerShell.
    • Откройте файл скрипта в любом текстовом редакторе и в строке 17 внутри двойных кавычек укажите свой API-ключ. О том, как сгенерировать ключ API, читайте на этой странице: Получение ключа API.
    • В объявлении переменной Server укажите доменное имя портала, а в объявлении переменной uName — имя пользователя для входа в систему. Имя пользователя и ключ API должны совпадать.
  4. Чтобы запустить скрипт PowerShell, щелкните правой кнопкой мыши созданный файл PS1 и выберите команду контекстного меню Запустить с помощью PowerShell.

После запуска скрипта будет опубликован статус для каждого авторизованного читателя, который он пытается создать, — «ошибка» или «готово». Если что-то пошло не так и появились ошибки, не закрывайте консоль PowerShell — вы можете скопировать и вставить результат в текстовый редактор и выполнить поиск по запросу "error", чтобы узнать, какие авторизованные читатели получили статус «ошибка».

Рекомендуется сначала попробовать использовать данный скрипт для нескольких авторизованных читателей и проверить, как он работает. Если все нормально, можно запустить данный скрипт для остальных авторизованных читателей.