C# Запрос на обновление GoogleSheets не выполняется - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь обновить значения в электронной таблице Google. Код выполняется до addRequest.Execute();, однако он не запускает оператор выполнения. Это работает, если я запускаю запрос на добавление, однако я не пытаюсь добавить, я пытаюсь обновить. У меня есть следующие области действия для программы static readonly string[] Scope = { SheetsService.Scope.Spreadsheets, DriveService.Scope.Drive};

var range = $"{ClashImport[i][0].ToString()}!B7:F106";
var REALInsertList = new sData.ValueRange();
var InsertList = new List<object>();

for (int n = 0; n < DataImport[i].Count; n++) {
    InsertList.Add(DataImport[i][n].AccountName);
    InsertList.Add(DataImport[i][n].AccountID);
    InsertList.Add(DataImport[i][n].Banned);
    InsertList.Add(DataImport[i][n].Suspended);
    InsertList.Add(DataImport[i][n].History);
}

REALInsertList.Values = new List<IList<object>> { InsertList };
var addRequest = sheetsService.Spreadsheets.Values.Update(REALInsertList, SheetToImportTo, range);
addRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
addRequest.Execute();

1 Ответ

1 голос
/ 06 мая 2020

Этот пример поможет вам достичь того, что вы пытаетесь сделать:

 // Define request parameters.
 // The ID of the spreadsheet to update.
 string spreadsheetId = "YOUR-SPREADSHEET-ID";  // TODO: Update placeholder value.

 // How the input data should be interpreted.
 string valueInputOption = "RAW";  // TODO: Update placeholder value. Ex -> RAW

 // The new values to apply to the spreadsheet.
 List<ValueRange> data = new List<ValueRange>(); // Instanciate a list of type ValueRange
 ValueRange values = new ValueRange(); // Instanciate a ValueRange object
 values.Range = "A1:B2"; // The range you want to update
 // Depending in your number of rows, create some logic to populate them 
 List<object> firstRow = new List<object> { "Hello", 2};
 List<object> secondRow = new List<object> { 3, "Hey!"};
 // Populate the values to be inserted in the sheet
 values.Values = new List<IList<object>> { firstRow, secondRow };
 // add values to the data ValueRange List
 data.Add(values);

 // TODO: Assign values to desired properties of `requestBody`:
 BatchUpdateValuesRequest requestBody = new BatchUpdateValuesRequest();
 requestBody.ValueInputOption = valueInputOption;
 requestBody.IncludeValuesInResponse = true;
 requestBody.Data = data;

 // Build and make the request
 SpreadsheetsResource.ValuesResource.BatchUpdateRequest request 
     = service.Spreadsheets.Values.BatchUpdate(requestBody, spreadsheetId);
 BatchUpdateValuesResponse response = request.Execute();
 IList<IList<object>> updatedValues = response.Responses[0].UpdatedData.Values;

 // Print updated values 
 Console.WriteLine("These are the updated values");
 foreach (var row in updatedValues)
 {
     Console.WriteLine("{0}, {1}", row[0], row[1]);
 }

 Console.Read();

Следуя методу : spreadsheets.values.batchUpdate документации конечной точки и Попробуйте это API , я смог понять, как построить тело обновления запроса. Обратите внимание, что я создал List<ValueRange>, который я заполняю соответствующими данными и тем самым делаю запрос.

Документация

Для получения дополнительной информации вы можете проверить:

...