Google Docs API Вставить текстовый запрос не удается смайлик - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над интеграцией Google Docs API с бэкэндом Java.У меня есть пустые Документы Google, и я пытаюсь вставить в этот документ несколько фрагментов текста.Итак, у меня есть многочисленные запросы на вставку текста.

У меня проблема, когда двухбайтовый символ Unicode (смайлик) является первым символом в тексте, а затем я пытаюсь вставить перед ним.

Для этого примера я использую "a" и "?".Если я попытаюсь сначала вставить "a", а затем "?".Текстовые запросы на вставку:

{
    requests=[
        {insertText={location={index=1}, text=?}},
        {insertText={location={index=1}, text=a}}
    ]
}

Java-код для создания этих запросов.

private List<Request> createRequests() {
    List<Request> requests = new ArrayList<>();
    requests.add(job.createInsertTextRequest(1, "?"));
    requests.add(job.createInsertTextRequest(1, "a"));

    return requests;
}

Я получаю этот ответ об ошибке.

Response Body: {
  "error": {
    "code": 400,
    "message": "Invalid requests[1].insertText: The insertion index cannot be within a grapheme cluster.",
    "status": "INVALID_ARGUMENT"
  }
}

Если я изменю порядок символов и вставлю "?", а затем "a".

{
    requests=[
        {insertText={location={index=1}, text=a}},
        {insertText={location={index=1}, text=?}}
    ]
}

Работает и вставляет "?a" в документ.

Примечание.Я следую предложению вставлять в обратном порядке (https://developers.google.com/docs/api/how-tos/move-text)

Упростите вопросы, написав в обратном порядке. Чтобы избежать необходимости пересчитывать эти изменения смещения, прикажите вставкам «писать в обратном направлении»: doвставка по индексу с наибольшим номером сначала идет к началу с каждой вставкой. Этот порядок гарантирует, что смещения каждой записи не будут затронуты предыдущими.


Обходной путь - добавлениелишний пробел перед символом смайлика. Есть ли лучший подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...