Таблица Google, как вставить столбец после последнего столбца - PullRequest
3 голосов
/ 31 января 2020

У меня есть эта таблица с одной таблицей:

enter image description here

Вызов этого: POST 'https://sheets.googleapis.com/v4/spreadsheets/{my_id}/values/Sheet1!E1:append?valueInputOption=USER_ENTERED' с методом POST и с этими заголовками:

Authorization: Bearer {valid_auth_token}
Accept: application/json
Content-Type: application/json

и это тело:

{
    "majorDimension": "COLUMNS",
    "values": [
        ["Header", "Hello"]
    ]
}

Добавит Header, Hello в виде столбца в E. Мой вопрос: как я могу добавить новые столбцы после последнего столбца без указания нового диапазона (E1 в этом случае)? Есть ли способ сделать это?

С помощью этого вызова: https://sheets.googleapis.com/v4/spreadsheets/{my_id} Я могу получить имя Sheets, но не могу получить диапазоны, так как я могу узнать диапазон?

1 Ответ

3 голосов
/ 01 февраля 2020
  • Вы хотите поместить значения Header и Hello в следующий столбец последнего столбца электронной таблицы без прямого указания диапазона.
  • Вы хотите добиться этого с помощью листов API.
  • Вы уже смогли получить и поместить значения для Google Spreadsheet с помощью API Sheets.

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

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

К сожалению, на текущем этапе в Sheets API нет методов для непосредственного извлечения диапазона данных. Хотя есть метод spreadsheets.values.append и AppendCellsRequest метода spreadsheets.batchUpdate, они могут использоваться для помещения значений в следующую строку последней строки на листе. Это не столбец. Также в этом случае диапазон данных не может быть восстановлен. Поэтому, чтобы достичь поставленной цели выше, я хотел бы предложить следующий обходной путь.

В этом обходном пути Web Apps используется в качестве оболочки. Клиент обращается к веб-приложениям, а веб-приложения извлекают диапазон данных и помещают значения в следующий столбец последнего столбца электронной таблицы. В этом случае диапазон не требуется устанавливать при доступе к веб-приложениям.

Использование:

Использование этого временного решения заключается в следующем.

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

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

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

2. Скопируйте и вставьте скрипт.

Скопируйте и вставьте следующий скрипт.

function doPost(e) {
  var obj = JSON.parse(e.postData.contents);
  var sheet = SpreadsheetApp.openById(obj.spreadsheetId).getSheetByName(obj.sheetName);
  var values = obj.values;
  sheet.getRange(1, sheet.getLastColumn() + 1, values.length, values[0].length).setValues(values);
  return ContentService.createTextOutput("ok");
}
  • Этот пример скрипта помещает значения в следующий столбец последнего столбца электронной таблицы.

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

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

4. Пример curl.

Чтобы проверить доступ к веб-приложениям, используйте следующую команду curl.

curl -L \
  -H "Authorization: Bearer ###" \
  -d '{"spreadsheetId": "###", "sheetName": "Sheet1", "values": [["Header"], ["Hello"]]}' \
  "https://script.google.com/macros/s/###/exec"
  • Укажите URL-адрес веб-приложений, полученный выше, и укажите Идентификатор таблицы и имя листа.
  • В этом случае диапазон не требуется включать в тело запроса. Поскольку диапазон данных извлекается в сценарии веб-приложений.
  • Когда выполняется указанная выше команда curl, значения "Header" и "Hello" помещаются в следующий столбец последнего столбца на листе «Лист1».

Примечание:

  • Если возникает ошибка авторизации, например, установите для «Любого, даже анонимного» значение «У кого есть доступ к приложению: ». В этом случае токен доступа не требуется использовать.
  • Или, пожалуйста, включите область действия https://www.googleapis.com/auth/drive.readonly и / или https://www.googleapis.com/auth/drive в токен доступа.

Ссылки:

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

...