Google REST API: как найти местоположение ячейки с некоторым значением - PullRequest
0 голосов
/ 19 марта 2020

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

Как выполнить поиск местоположения ячейки с помощью Google REST API

Как, например,

GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values:find?value=123456

response:
 sheet1! B2:B2

Также: I Также хочу поддержать вырезать и вставить с одного листа на другой. поэтому метаданные в строке не могут работать, поскольку они теряются при копировании ячеек из строки в другую строку. (отсутствует API REST для вырезания и вставки измерения (столбец || строки) с одного листа на другой.

Если есть способ скопировать и вставить измерение между листами, я просто могу использовать


POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values:batchGetByDataFilter

{
  "dataFilters": [
    {
      object (DataFilter)
    }
  ],
  "majorDimension": enum (Dimension),
  "valueRenderOption": enum (ValueRenderOption),
  "dateTimeRenderOption": enum (DateTimeRenderOption)
}

найти строку и удалить ее.

1 Ответ

1 голос
/ 20 марта 2020
  • Вы хотите получить номер строки путем поиска значения с помощью API Sheets.
  • Вы хотите удалить строки, выполнив поиск значения с помощью API Sheets.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Проблема и обходное решение:

К сожалению, на текущем этапе номер строки не может быть получен напрямую путем поиска значения с помощью Sheets API. Кроме того, строки не могут быть удалены путем поиска значения с помощью API Sheets. Я не уверен, будут ли они добавлены в будущем обновлении. Итак, в текущем обходном пути, как насчет следующих обходных путей?

Обходное решение 1:

Последовательность действий этого обходного пути следующая.

  1. Извлечение всех имен листов и Идентификатор листа, используя метод "spreadsheets.get" в API листов.
  2. Извлечение всех значений из листа в электронную таблицу, используя метод Sheets API "spreadsheets.values.batchGet".
  3. Найдите имя листа и номер строки в полученных значениях, используя значение.
    • В этом случае требуется подготовить сценарий.
  4. Удалите строки, используя метод "spreadsheets.batchUpdate" в API листов.

Благодаря этому потоку ваша цель может быть достигнута.

Обходной путь 2:

В этом обходном пути веб-приложения, созданные в скрипте Google Apps, используются в качестве API.

1. Создайте новый проект скрипта Google Apps.

Пример скрипта веб-приложений - это скрипт Google Apps. Поэтому, пожалуйста, создайте проект Google Apps Script.

Если вы хотите создать его напрямую, перейдите к https://script.new/. В этом случае, если вы не вошли в Google, откроется экран входа. Пожалуйста, войдите в Google. При этом открывается редактор сценариев Google Apps Script.

2. Подготовьте скрипт.

Скопируйте и вставьте следующий скрипт в редактор скриптов. Этот скрипт предназначен для веб-приложений. В этом скрипте используется Sheets API. * * * * * * * * * * * * * * * * * *

* * * * * * * *1053* В этом случае используется метод GET. Если вы хотите запустить функцию, предоставляя большие данные, вы можете использовать doPost() вместо doGet().

3. Развертывание веб-приложений.

  1. В редакторе сценариев откройте диалоговое окно с помощью «Publi sh» -> «Развернуть как веб-приложение».
  2. Выберите «Me " for " Запустите приложение как: ".
    • При этом сценарий запускается от имени владельца.
    • Здесь, если задано значение «Любой», сценарий запускается от имени каждого пользователя. В этом случае требуется предоставить общий доступ к сценарию каждому пользователю. И токен доступа требуется использовать. Пожалуйста, будьте осторожны.
  3. Выберите "Любой, даже анонимный" для "У кого есть доступ к приложению:" .
    • В этом случае токен доступа не требуется запрашивать. Я думаю, что в качестве тестового примера я рекомендую этот параметр.
    • Конечно, вы также можете использовать токен доступа. В это время установите «Anyone» .
  4. Нажмите кнопку «Развернуть» как новую «Project version».
  5. Автоматически открывать диалоговое окно «Требуется авторизация».
    1. Нажмите «Просмотреть разрешения».
    2. Выберите собственную учетную запись.
    3. Нажмите «Дополнительно» в разделе «Это приложение не подтверждено».
    4. Нажмите " Go to ### имя проекта ### (небезопасно) "
    5. Нажмите кнопку" Разрешить ".
  6. Нажмите" ОК ".
  7. Скопируйте URL-адрес веб-приложений. Это как https://script.google.com/macros/s/###/exec.
    • Когда вы изменили скрипт Google Apps, пожалуйста, повторно разверните его как новую версию. Этим измененный сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны.

3. Запустите функцию с помощью веб-приложений.

Это пример команды скручивания для использования веб-приложений. Укажите URL-адрес веб-приложения, идентификатор таблицы и значение поиска.

curl -GL \
  -d "spreadsheetId=###" \
  -d "value=sample" \
  "https://script.google.com/macros/s/###/exec"
  • Когда spreadsheetId=### и value=sample используются в качестве параметра запроса в doGet(e). Например, вы можете получить spreadsheetId, используя e.parameter.spreadsheetId.
  • В приведенном выше сценарии веб-приложений при запуске этой команды curl возвращается значение, подобное [{"range":"'Sheet1'!A1","sheetId":0},{"range":"'Sheet2'!B2","sheetId":###}]. Это результат поиска по значению sample.

    • . В качестве примера можно найти значение по всем листам в электронной таблице. Об этом вы можете изменить сценарий в соответствии с вашей реальной ситуацией.
  • Если используется deleteRows=true, как показано ниже, то значение ищется на всех листах в электронной таблице и в искомом строки удаляются.

    curl -GL \
      -d "spreadsheetId=###" \
      -d "value=sample" \
      -d "deleteRows=true" \
      "https://script.google.com/macros/s/###/exec"
    

Примечание:

  • Этот пример сценария используется с V8.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, которое вам нужно, я приношу свои извинения.

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