Как создать правильный вызов values_update, используя ящик google_sheets4? - PullRequest
1 голос
/ 29 февраля 2020

В настоящее время, пытаясь получить работающий базовый пример c, я пытаюсь обновить ячейки A1: A4 значением «1».

let mut req = ValueRange::default();
req.values = Some(vec![ vec![ String::from("1"), String::from("1"), String::from("1"), String::from("1") ] ]);
req.range = Some(String::from("A1:A4"));

let result = hub.spreadsheets().values_update(req, SPREADSHEET_ID, "A1:A4")
         .value_input_option("USER_ENTERED")
         .doit();

Это отвечает плохим запросом. Я проверил, что моя аутентификация работает и что я могу редактировать электронную таблицу следующим образом:

let mut req = sheets4::ClearValuesRequest::default();
let result = hub.spreadsheets().values_clear(req, SPREADSHEET_ID, "A1:B2").doit();

Это очищает A1: B2, как и ожидалось.

В идеале, я хотел бы иметь функция, подобная этой

batch_update(&[1,2,3,4, (etc)], &["A1", "B2", "F3", "G42", (etc)]);

, которая установит ячейки A1, B2, F3 .. в 1, 2, 3 ... Я совершенно незнаком с электронными таблицами Google и таблицами в целом за пределами базового c использования.

1 Ответ

0 голосов
/ 29 февраля 2020

Я должен был прочитать официальную документацию API листов Google, а не документацию об ящике. В официальной документации я нашел https://developers.google.com/sheets/api/samples/writing, который помог мне получить базовый пример c, работающий так:

let mut req = sheets4::ValueRange::default();
req.range = Some(String::from("A1:D6"));
req.major_dimension = Some(String::from("ROWS"));
req.values = Some(vec![
    vec!["Item".to_owned(), "Cost".to_owned(), "Stocked".to_owned(), "Ship Date".to_owned()],
    vec!["Wheel".to_owned(), "$20.50".to_owned(), "4".to_owned(), "3/1/2016".to_owned()],
    vec!["Wheel".to_owned(), "$20.50".to_owned(), "4".to_owned(), "3/1/2016".to_owned()],
    vec!["Wheel".to_owned(), "$20.50".to_owned(), "4".to_owned(), "3/1/2016".to_owned()],
    vec!["Wheel".to_owned(), "$20.50".to_owned(), "4".to_owned(), "3/1/2016".to_owned()],
    vec!["Wheel".to_owned(), "$20.50".to_owned(), "=SUM(C2:C5)".to_owned(), "3/1/2016".to_owned()],
]);

let result = hub.spreadsheets().values_update(req, SPREADSHEET_ID, "A1:D6")
    .value_input_option("USER_ENTERED")
    .doit();
...