Массовое редактирование Microsoft Graph API для несмежных строк в Excel - PullRequest
0 голосов
/ 09 октября 2018

Мне нужно иметь возможность редактировать несколько (10-20) несмежных строк в таблице Excel через Microsoft Graph API.Мое приложение получает список из 10-20 строк в качестве входных данных.Затем он должен быть в состоянии найти строки данных, связанные с этими строками (все они находятся в одном и том же столбце), и обновить каждую строку (отдельный столбец) различными значениями.Я могу обновить строки, используя отдельные запросы PATCH, в которых указывается конкретный индекс строки для обновления, однако отправка 10-20 отдельных HTTP-запросов недостаточна из-за соображений производительности.

Вот что я пробовал такдалеко:

  • JSON дозирование.Я создал пакетный запрос JSON, где каждый запрос в пакете обновляет строку данных с определенным индексом строки.Тем не менее, только некоторые вызовы действительно успешны, в то время как остальные из них терпят неудачу из-за невозможности получить блокировку для редактирования документа Excel.Использование функции зависящего в пакетной обработке JSON решило проблему, но производительность была чуть лучше, чем отдельная отправка запросов на обновление.
  • Параллельные запросы PATCH.Если я использую несколько потоков для одновременного выполнения запросов PATCH, я сталкиваюсь с той же проблемой, что и выше.Некоторые из них выполняются успешно, в то время как другие терпят неудачу, поскольку они не могут получить блокировку для редактирования документа Excel.
  • Фильтрация / сортировка таблицы для выполнения обновления диапазона для определенных строк, видимых в настоящее время.Мне удалось применить фильтр таблиц с помощью Microsoft Graph API, однако оказалось, что вы можете определить только два критерия для фильтрации, и мне нужно иметь возможность фильтровать данные по 10-20 различным значениям.Таким образом, не похоже, что я смогу сделать это, используя обновление диапазона, поскольку я не могу фильтровать по достаточному количеству значений одновременно, и строки не могут быть отсортированы таким образом, чтобы все они оставались в непрерывном блоке.

Есть ли какая-либо функция в Microsoft Graph API, о которой я не знаю, которая позволила бы мне делать то, что я предлагаю?Или любая другая идея / подход, о котором я не думаю?Я думаю, что массовое редактирование несмежных строк в диапазоне / таблице было бы распространенной проблемой.Я искал документацию по API / форумы / и т.д.и, кажется, не может найти ничего другого, что могло бы помочь.

Любая помощь / информация в правильном направлении будет принята с благодарностью!

1 Ответ

0 голосов
/ 09 октября 2018

После долгих проб и ошибок я смог решить свою проблему с помощью фильтрации.Я наткнулся на этот файл readme для фильтра apply: https://github.com/microsoftgraph/microsoft-graph-docs/blob/master/api-reference/v1.0/api/filter_apply.md, который имеет примерное тело запроса:

{
    "criteria": {
        "criterion1": "criterion1-value",
        "criterion2": "criterion2-value",
        "color": "color-value",
        "operator": {
        },
        "icon": {
          "set": "set-value",
          "index": 99
        },
        "dynamicCriteria": "dynamicCriteria-value",
        "values": {
        },
        "filterOn": "filterOn-value"
    }
}

Хотя это не помогло мне сразу, оно заставило меня задуматься в правильном направлении.Мне не удалось найти больше документации о том, как работает формат запроса, но я начал играть с телом запроса, пока, наконец, не получил что-то работающее.Я изменил «значения» на массив строк и «filterOn» на «значения».Теперь вместо того, чтобы ограничиваться критерием 1 и критерием 2, я могу фильтровать любые значения, которые я передаю в массиве «значения».

{  
    "criteria": {
        "values": [
            "1",
            "2",
            "3",
            "4",
            "5"
        ],
        "filterOn": "values"
    }
}

После применения фильтра я получаю диапазон visibleView, который я обнаружил здесь: https://developer.microsoft.com/en-us/excel/blogs/additions-to-excel-rest-api-on-microsoft-graph/, вот так:

/workbook/tables('tableName')/range/visibleView?$select=values

Наконец, я выполняю массовое редактирование диапазона visibleView с помощью запроса PATCH, например:

/workbook/tables('tableName')/range/visibleView

и тела запроса с "массив значений, который соответствует количеству столбцов / строк, которые я обновляю.

К сожалению, эта простая задача была затруднена из-за отсутствия документации по Microsoft Graph API, но, надеюсь, эта информация поможет кому-то еще.

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