Я решил эту проблему и выявил новую проблему.
Во-первых, решение. Если у вас есть GDataWorksheetEntry, этот код будет выполнять пакетную операцию - в этом случае вставка:
NSURL *cellsFeedUrl = [[worksheetEntry cellsLink] URL];
// Get worksheet cells feed
[service fetchFeedWithURL:cellsFeedUrl completionHandler:
^(GDataServiceTicket *ticket, GDataFeedBase *feed, NSError *error) {
NSURL *batchUrl = [[feed batchLink] URL];
GDataFeedSpreadsheetCell *batchFeed = [GDataFeedSpreadsheetCell spreadsheetCellFeed];
NSMutableArray *cells = [NSMutableArray array];
GDataSpreadsheetCell *cell = [GDataSpreadsheetCell cellWithRow:1 column:1 inputString:@"test" numericValue:nil resultString:nil];
GDataEntrySpreadsheetCell *cellEntry = [GDataEntrySpreadsheetCell spreadsheetCellEntryWithCell:cell];
static unsigned int staticID = 0;
NSString *batchID = [NSString stringWithFormat:@"batchID_%u", ++staticID];
[cellEntry setBatchIDWithString:batchID];
[cells addObject:cellEntry];
[batchFeed setEntriesWithEntries:cells];
GDataBatchOperation *op;
op = [GDataBatchOperation batchOperationWithType:kGDataBatchOperationInsert];
[batchFeed setBatchOperation:op];
[service fetchFeedWithBatchFeed:batchFeed forBatchFeedURL:batchUrl
completionHandler:
^(GDataServiceTicket *ticket, GDataFeedBase *feed, NSError *error) {
NSLog(@"FEED ENTRIES: %@",[feed entries]);
NSLog(@"ERROR: %@",error);
}];
}];
К сожалению, при доступе к полученному пакетному каналу (выполненному в операторе регистрации) вы увидите это:
FEED ENTRIES: (
"GDataEntrySpreadsheetCell 0x5fcf510: {v:3.0 title:Error content:Insert not supported on batch. id:batchID_2 batchID:batchID_2 batchStatus:501}"
)
Так что теперь мне нужно выяснить, как взломать отсутствие поддержки Google для пакетной вставки.
Обратите внимание, что если вы измените операцию для обновления, вы получите это:
FEED ENTRIES: (
"GDataEntrySpreadsheetCell 0xae73880: {v:3.0 title:Error content:Missing entry id id:batchID_2 batchID:batchID_2 batchStatus:400}"
)
Отсутствующий идентификатор записи вызван тем, что я создал ячейку без ссылки на существующую ячейку - поэтому я сосредоточусь на попытке предоставить эту ссылку и предоставить вызов пакетного обновления вместо вызова пакетной вставки.