Я разрабатываю настраиваемое приложение в «ServiceNow», которое требует кодирования Javascript и HTML. Итак, у меня есть поле, скажем, «описание» в моей форме. Как сохранить значение этого поля в текстовом документе на рабочем столе?сохранить значение поля в файл на рабочем столе
ответ
Хотя JavaScript не может создать файл для загрузки самостоятельно, у ServiceNow есть способ создать его. Создание документа Word невозможно без использования MID-сервера и некоторого пользовательского кода Java, но если какой-либо тип файла будет создан, вы можете создать файл Excel с использованием URL-адреса экспорта. Чтобы проверить это, я сделал действие пользовательского интерфейса в экземпляре разработчика, который запустил Хельсинки в таблице проблем. Я сделал вид списка, который содержит только поле, которое я хотел сохранить, а затем использовать следующий код в действии UI:
function startDownload() {
window.open("https://dev13274.service-now.com/problem_list.do?EXCEL&sysparm_query=sys_id%3D" +
g_form.getUniqueValue() + "&sysparm_first_row=1&sysparm_view=download");
}
Когда используется действие UI, он открывает новую вкладку, которая будет закрывать почти немедленно и предложите пользователю сохранить или открыть файл Excel, содержащий содержимое этого единственного поля.
Если вы хотите узнать больше о различных способах экспорта данных из ServiceNow, проверьте их wiki-страницу на subject.
Javascript защищает клиентов от вредоносных серверов, которые хотят читать файлы на своем компьютере. По этой причине вы не можете читать или записывать файл на компьютер клиента с помощью javascript. Если вы не используете какой-либо элемент управления загрузкой файлов, который неявно запрашивает разрешение пользователя.
Вы можете использовать HTML5 FileSystem API для достижения этой цели
window.requestFileSystem(window.PERSISTENT, 1024*1024, function (fs) {
fs.root.getFile('file.txt', {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var blob = new Blob([description.value], {type: 'text/plain'});
fileWriter.write(blob);
});
});
});
FYI, хром поддерживает webkitRequestFileSystem
.
В качестве альтернативы, используйте Blob и сгенерировать ссылку для загрузки
var text = document.getElementById("description").value;
var blob = new Blob([text], {type:'text/plain'});
var fileName = "test.txt";
var downloadLink = document.createElement("a");
downloadLink.download = fileName;
downloadLink.href = window.webkitURL.createObjectURL(textFile);
downloadLink.click();
Большое вам спасибо за помощь. У меня есть еще один вопрос. Вы знаете, как настроить servicenow для интеграции с Microsoft Outlook. Мне нужно сделать это, потому что наши пользователи хотят иметь возможность самостоятельно создавать приглашение на собрание, чтобы они могли смотреть на доступность всех участников и доступность номеров. У меня есть разрешение на доступ к серверу обмена, но он наступил на настройку снега. @caputLupinum –