Как в Google Sheets API писать в разные диапазоны?

61
16 марта 2022, 22:00

Пытаюсь разобраться в Google Sheets API на PHP 7. В общем, как правильно заполнить range, чтобы получилось так?

|______|Name|____|____|
|  Date|Qwer|Wert|Erty|
|1.2.20|1234|2345|3456|

Третья строка заполняется отдельно, другой функцией. Возвращаясь к вопросу. Я попробовал сделать так:

$range = 'B1:B1,A2:E2';
$values = [["Name"],["Date", "Qwer", "Wert", "Erty"]];

Ясен пень ошибка:

Fatal error: Uncaught Google_Service_Exception: {
  "error": {
    "code": 400,
    "message": "Unable to parse range: B1:B1,A2:E2",
    "errors": [
      {
        "message": "Unable to parse range: B1:B1,A2:E2",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}

Я смотрел документацию, но так и не понял смысла в этом, как это использовать?

{
  "valueInputOption": "USER_ENTERED",
  "data": [
    {
      "range": "Sheet1!A1:A4",
      "majorDimension": "COLUMNS",
      "values": [
        ["Item", "Wheel", "Door", "Engine"]
      ]
    },
    {
      "range": "Sheet1!B1:D2",
      "majorDimension": "ROWS",
      "values": [
        ["Cost", "Stocked", "Ship Date"],
        ["$20.50", "4", "3/1/2016"]
      ]
    }
  ]
}
Answer 1

Update

Задайте начальную точку в range (например, Sheet1!A1), а потом пишите влево и вниз, как вам надо

curl --request PUT \
  'https://sheets.googleapis.com/v4/spreadsheets/ABC123/values/Sheet1!A1?valueInputOption=USER_ENTERED&key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"values":[["","Name"],["Date","Qwer","Wert","Erty"],["1.2.20","1234","2345","3456"]]}' \
  --compressed

Endpoint

v4/spreadsheets/ABC123/values/Sheet1!A1

Required params

valueInputOption=USER_ENTERED

Data

{
  "values": [
    ["", "Name"],
    ["Date", "Qwer", "Wert", "Erty"],
    ["1.2.20", "1234", "2345", "3456"]
  ]
}

BatchUpdate

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

curl --request POST \
  'https://sheets.googleapis.com/v4/spreadsheets/ABC123/values:batchUpdate?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"valueInputOption":"USER_ENTERED","data":[{"range":"Sheet1!B1","values":[["Name"]]},{"range":"Sheet1!A2:D3","values":[["Date","Qwer","Wert","Erty"],["1.2.20","1234","2345","3456"]]}]}' \
  --compressed

Endpoint

v4/spreadsheets/ABC123/values:batchUpdate

Required params

Нет

Data

{
  "valueInputOption": "USER_ENTERED",
  "data": [{
    "range": "Sheet1!B1",
    "values": [
      ["Name"]
    ]
  }, {
    "range": "Sheet1!A2:D3",
    "values": [
      ["Date", "Qwer", "Wert", "Erty"],
      ["1.2.20", "1234", "2345", "3456"]
    ]
  }]
}

READ ALSO
Как понять логику?

Как понять логику?

Читал статью «почему не любят php»И там был пример, приводился этот код:

85
конкатенация строки и двух условий if

конкатенация строки и двух условий if

Есть 'строка' в конце которой стоит Тег <br> нужно сделать перенос строки при двух переменных, отображение которых зависит от условия if

231
Проблемы с кодировкой MySQL

Проблемы с кодировкой MySQL

Написал такой код для пангинации, но он почему выводит кракозябры вместо текстаКак это исправить?

104
Как в php выровнять строки по длине

Как в php выровнять строки по длине

Есть разные строки, которые отправляются одним сообщениемХочу сделать в виде примитивной таблицы, напр:

118