execute

Метод выполняет переданный ему VKScript-код, в котором может происходить вызов других API-методов с сохранением и обработкой промежуточных результатов.

Примечание. Метод доступен для вызова с сервисным ключом доступа.

Этот метод можно вызвать с ключом доступа пользователя.

Этот метод можно вызвать с ключом доступа сообщества.

Параметры

code

text

Код алгоритма на языке программирования VKScript. Язык похож на JavaSсript или ActionScript (предполагается совместимость с ECMAScript). Алгоритм должен завершаться командой return %выражение%. Операторы должны быть разделены точкой с запятой.

Внутри параметра может содержаться не более 25 обращений к методам API.

func_v

integer

Формат языка VKScript

Языком поддерживаются:

  • Арифметические операции.

  • Логические операции: < (меньше), > (больше), <= (меньше или равно), >= (больше или равно), == (равно) и != (не равно). В данный момент поддерживаются сравнения:

    • Двух строк.
    • Двух чисел.
    • Строки и числа. Строка приводится к числу.

    Результат логического выражения может быть использован в управляющей конструкции if...[[else...]].

  • Создание массивов и списков ([X,Y]).

  • parseInt и parseDouble.

  • Объединение строк (+).

  • Условный оператор (if).

  • Выборка массива по параметру (@.).

  • Вызовы методов API, параметр length.

  • Циклы с использованием оператора while.

  • Методы Javascript:

    • Работа с массивами: slice, push, pop, shift, unshift, splice.
    • Работа со строками: substr, split.
  • Оператор delete.

  • Присваивания элементам маcсива, например: row.user.action = "test".

  • Поиск в массиве или строке — indexOf. Возвращается -1, если элемент не найден. Пример: "123".indexOf(2) = 1, [[1, 2, 3]].indexOf(3) = 2.

Примечание. Не поддерживается создание функций.

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

Примеры значения параметра code

Пример вызова метода users.get

VKScript
// Присваивает переменной a результат поиска по фотографиям с данными параметрами. var a = API.photos.search({"q":"Nature","count":3}); // Присваивает переменной b список владельцев найденных фотографий. var b = a.items@.owner_id; // Присваивает переменной с данные о страницах владельцев из списка b. var c = API.users.get({"user_ids":b}); // Возвращает список фамилий из данных о владельцах. return c@.last_name; // Пример цикла. var a = 1; var b = 10; while (b != 0) { b = b - 1; a = a + 1; }; return a;

То же самое можно более коротко записать так:

VKScript
return API.users.get({"user_ids": API.photos.search({"q":"Beatles", "count":3}).items@.owner_id})@.last_name;

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

VKScript
return [API.friends.get(), API.status.get()]; return {"friends": API.friends.get(), "status": API.status.get()};

Пример использования конструкции if...[[else...]]

VKScript
var posts = API.wall.get({"count": 1}); if (posts.count < 0) { return {"post": null, "copy_owner": null}; } else { var post = posts.items[0]; var copy_owner = null; if (post.copy_history[0]) { if (post.copy_history[0].owner_id > 0) { copy_owner = API.users.get({"user_id": post.copy_history[0].owner_id})[0]; } else if (post.copy_history[0].owner_id < 0) { copy_owner = API.groups.getById({"group_ids": -post.copy_history[0].owner_id})[0]; } return {"post": post, "copy_owner": copy_owner}; } else { return {"post": post, "copy_owner": null}; } }

Результат

Возвращает данные, полученные в результате выполнения VKScript-кода. Формат данных — JSON.

Примечание.

  • Версия API, указанная при вызове метода execute, не применяется автоматически к методам, вызываемым внутри code.
  • Существует ограничение на объём ответа. Если данные в ответе занимают больше 5 Мбайт, вернётся ошибка 13 с комментарием "response size is too big".

Коды ошибок

12
Unable to compile code

В ходе выполнения могут произойти общие ошибки