- Сообщения
- 811
- Реакции
- 726
Написал достаточно корявый скрипт, и теперь пытаюсь его усложнить тем, что в качестве трех параметров хочу задать текстовые переменные из документа, имеющие тип "Сustom Text".
Но вместо ожидаемого получаю ссылку следующего вида:
Вопрос: каким образом текстовую переменную документа поместить в адрес интернет-ссылки?
Файл, в котором все приготовлено, прикладываю. Все данные до и после запуска скрипта можно увидеть в панели Hyperlinks.
JavaScript:
// Формирование crossref-ссылок на кнопках "Check for update".
// URL на кнопке должен иметь следующий вид:
// https://crossmark.crossref.org/dialog/?doi=10.11111/1111-1111-2001-15-1-10-27&domain=pdf&date_stamp=2001-01-01
// где "2001-15-1" -- номер журнала (год-том-выпуск), "10-27" -- диапазон страниц статьи, "2001-01-01" -- дата выкладывания на сайте
with (app.activeDocument) {
var webDate = (prompt ("Укажите дату выкладывания на сайте", "YYYY-MM-DD")); // Внесение даты выкладывания на сайте
if (webDate != null) { // Если не была нажата кнопка "Отмена"
if (webDate.match(/.{4}\-.{2}\-.{2}/)) { // Если формат внесенных данных не был нарушен
var i;
var year = app.activeDocument.textVariables.item("year");
var volume = app.activeDocument.textVariables.item("volume");
var issue = app.activeDocument.textVariables.item("issue");
var hls = hyperlinkURLDestinations;
for (i = 2; i < hls.length; i++) { // отсчет начинается с цифры 2, так как две первые кнопки лежат на мастер-странице и учитываться не должны)
var a = "https://crossmark.crossref.org/dialog/?doi=10.1111/1111-1111-"; // Неизменяемая часть ссылки #1
var b = sections[i-1].pageNumberStart; // Первая страница статьи (= секции)
var c = b + (sections[i-1].length - 1); // Последняя страница статьи (= секции)
var d = "&domain=pdf&date_stamp="; // Неизменяемая часть ссылки #2
if (b === c) { // Если статья занимает одну страницу,
hls[i].destinationURL = a + year + "-" + volume + "-" + issue + "-" + b + d + webDate; // диапазон страниц заменяется на номер страницы
} else { // Если статья занимает больше одной страницы,
hls[i].destinationURL = a + year + "-" + volume + "-" + issue + "-" + b + "-" + c + d + webDate; // формируется диапазон страниц
}
}
} else {
alert ("Неправильно указаны данные!"); // Указание на ошибку внесения данных
}
} else {
alert ("Неправильно указаны данные!"); // Указание на ошибку внесения данных
}
}
Но вместо ожидаемого получаю ссылку следующего вида:
https://crossmark.crossref.org/dialog/?doi=10.1111/1111-1111-[object TextVariable]-[object TextVariable]-[object TextVariable]-39-40&domain=pdf&date_stamp=2021-12-06
Вопрос: каким образом текстовую переменную документа поместить в адрес интернет-ссылки?
Файл, в котором все приготовлено, прикладываю. Все данные до и после запуска скрипта можно увидеть в панели Hyperlinks.