Различия между формулами в разных местах - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь добавить ячейки с гиперссылкой к файлу электронной таблицы, следуя приведенным здесь инструкциям https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#celldata

Гиперссылка, на которую указывает эта ячейка, если таковая имеется. Это поле только для чтения. (Чтобы установить его, используйте формулу = HYPERLINK в поле userEnteredValue.formulaValue.)

Проблема состоит в том, что некоторые формулы имеют несколько параметров, разделенных запятой. Но в электронной таблице разграничители различны, например, в Турции. Разделитель в турецкой локали обозначается точкой с запятой, а не запятой. Я не проверял, различаются ли разделители в разных локалях.

После того, как я попытался добавить ссылку как formulaValue, результат выглядит так в электронной таблице, в которой есть локаль Турции:

https://user-images.githubusercontent.com/5789670/77210180-61581500-6b11-11ea-9302-81dcf84256f8.png

, и это из электронной таблицы, которая имеет языковой стандарт США:

https://user-images.githubusercontent.com/5789670/77210238-8e0c2c80-6b11-11ea-9eb8-ea82fdc869d2.png

Обе таблицы имеют одинаковые формулы и разница только в этом (по сравнению с пустой таблицей)

https://user-images.githubusercontent.com/5789670/77210339-cc095080-6b11-11ea-8805-92b3f6c59b0b.png

Я не могу отследить / определить всю конфигурацию для разделителя в разных локалях. Я просто нашел способ генерировать формулу гиперссылки без проблем с разделителями.

Что-то вроде функции

.getDelimiter("Europe/Istanbul")

или поля в свойствах, чтобы понять, какой тип разделителя используется в целевом объекте. файл электронной таблицы

// SpreadsheetProperties
"properties": {
  "title": string,
  "locale": string,
  "timeZone": string,
  "formulaDelimiter": string, // read-only
  ...
}

Сведения об окружении

  • ОС: Ubuntu 18.04
  • Node.js версия: v12.13.0
  • npm версия : 6.13.7
  • googleapis версия: ^ 48.0.0
Шаги для воспроизведения
  1. Имеются две разные таблицы, которые имеют локали Соединенных Штатов и Турции.
  2. Используйте следующие данные для добавления ячейки с помощью batchUpdate API
{
    "requests": [
        {
            "appendCells": {
                "fields": "*",
                "rows": [
                    {
                        "values": [
                            {
                                "userEnteredFormat": {},
                                "userEnteredValue": {
                                    "formulaValue": "=HYPERLINK('https://google.com','20006922')"
                                }
                            }
                        ]
                    }
                ],
                "sheetId": 111111
            }
        }
    ]
}

Выполнение этих шагов гарантирует максимально быстрое разрешение.

Спасибо!


Оригинальный выпуск на Github. Можно найти здесь: https://github.com/googleapis/google-api-nodejs-client/issues/1994

1 Ответ

1 голос
/ 25 марта 2020

В вашем случае, как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Проблема и обходной путь:

Когда запятая , используется как "formulaValue": "=HYPERLINK('https://google.com','20006922')" для локали, которая использует точку с запятой ; когда формула помещается с использованием метода batchUpdate Sheets API, запятая используется без замены. При этом возникает такая ошибка.

С другой стороны, когда точка с запятой используется в качестве разделителя вместо запятой для локального, который использует запятую, когда формула помещается с использованием API Sheets, точка с запятой автоматически заменяется запятой. При этом ошибка не возникает.

Ситуация сверху, как насчет следующей модификации? В этом случае я также заменил ' на ".

С:

"formulaValue": "=HYPERLINK('https://google.com','20006922')"

На:

"formulaValue": "=HYPERLINK(\"https://google.com\";\"20006922\")"

В моем окружении вышеуказанная модификация может использоваться. Но я не уверен, что это можно использовать в вашей ситуации. Поэтому, если это не было прямым решением вашей проблемы, я прошу прощения.

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