Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.02 KB | None | 0 0
  1. import com.google.api.services.sheets.v4.Sheets;
  2. import com.google.api.services.sheets.v4.model.*;
  3. import com.google.common.collect.Lists;
  4.  
  5. import java.io.IOException;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8. import java.util.Collections;
  9. import java.util.List;
  10.  
  11. public class SpreadsheetSnippets {
  12. private Sheets service;
  13.  
  14. public SpreadsheetSnippets(Sheets service) {
  15. this.service = service;
  16. }
  17.  
  18. public String create(String title) throws IOException {
  19. Sheets service = this.service;
  20. // [START sheets_create]
  21. Spreadsheet spreadsheet = new Spreadsheet()
  22. .setProperties(new SpreadsheetProperties()
  23. .setTitle(title));
  24. spreadsheet = service.spreadsheets().create(spreadsheet)
  25. .setFields("spreadsheetId")
  26. .execute();
  27. System.out.println("Spreadsheet ID: " + spreadsheet.getSpreadsheetId());
  28. // [END sheets_create]
  29. return spreadsheet.getSpreadsheetId();
  30. }
  31.  
  32. public BatchUpdateSpreadsheetResponse batchUpdate(String spreadsheetId, String title,
  33. String find, String replacement)
  34. throws IOException {
  35. Sheets service = this.service;
  36. // [START sheets_batch_update]
  37. List<Request> requests = new ArrayList<>();
  38. // Change the spreadsheet's title.
  39. requests.add(new Request()
  40. .setUpdateSpreadsheetProperties(new UpdateSpreadsheetPropertiesRequest()
  41. .setProperties(new SpreadsheetProperties()
  42. .setTitle(title))
  43. .setFields("title")));
  44. // Find and replace text.
  45. requests.add(new Request()
  46. .setFindReplace(new FindReplaceRequest()
  47. .setFind(find)
  48. .setReplacement(replacement)
  49. .setAllSheets(true)));
  50. // Add additional requests (operations) ...
  51.  
  52. BatchUpdateSpreadsheetRequest body =
  53. new BatchUpdateSpreadsheetRequest().setRequests(requests);
  54. BatchUpdateSpreadsheetResponse response =
  55. service.spreadsheets().batchUpdate(spreadsheetId, body).execute();
  56. FindReplaceResponse findReplaceResponse = response.getReplies().get(1).getFindReplace();
  57. System.out.printf("%d replacements made.", findReplaceResponse.getOccurrencesChanged());
  58. // [END sheets_batch_update]
  59. return response;
  60. }
  61.  
  62. public ValueRange getValues(String spreadsheetId, String range) throws IOException {
  63. Sheets service = this.service;
  64. // [START sheets_get_values]
  65. ValueRange result = service.spreadsheets().values().get(spreadsheetId, range).execute();
  66. int numRows = result.getValues() != null ? result.getValues().size() : 0;
  67. System.out.printf("%d rows retrieved.", numRows);
  68. // [END sheets_get_values]
  69. return result;
  70. }
  71.  
  72. public BatchGetValuesResponse batchGetValues(String spreadsheetId, List<String> _ranges)
  73. throws IOException {
  74. Sheets service = this.service;
  75. // [START sheets_batch_get_values]
  76. List<String> ranges = Arrays.asList(
  77. //Range names ...
  78. );
  79. // [START_EXCLUDE silent]
  80. ranges = _ranges;
  81. // [END_EXCLUDE]
  82. BatchGetValuesResponse result = service.spreadsheets().values().batchGet(spreadsheetId)
  83. .setRanges(ranges).execute();
  84. System.out.printf("%d ranges retrieved.", result.getValueRanges().size());
  85. // [END sheets_batch_get_values]
  86. return result;
  87. }
  88.  
  89. public UpdateValuesResponse updateValues(String spreadsheetId, String range,
  90. String valueInputOption, List<List<Object>> _values)
  91. throws IOException {
  92. Sheets service = this.service;
  93. // [START sheets_update_values]
  94. List<List<Object>> values= _values;
  95.  
  96. // [END_EXCLUDE]
  97. ValueRange body = new ValueRange()
  98. .setValues(values);
  99. UpdateValuesResponse result =
  100. service.spreadsheets().values().update(spreadsheetId, range, body)
  101. .setValueInputOption(valueInputOption)
  102. .execute();
  103. System.out.printf("%d cells updated.", result.getUpdatedCells());
  104. // [END sheets_update_values]
  105. return result;
  106. }
  107.  
  108. public BatchUpdateValuesResponse batchUpdateValues(String spreadsheetId, String range,
  109. String valueInputOption,
  110. List<List<Object>> _values)
  111. throws IOException {
  112. Sheets service = this.service;
  113. // [START sheets_batch_update_values]
  114. List<List<Object>> values = Arrays.asList(
  115. Arrays.asList(
  116. // Cell values ...
  117. )
  118. // Additional rows ...
  119. );
  120. // [START_EXCLUDE silent]
  121. values = _values;
  122. // [END_EXCLUDE]
  123. List<ValueRange> data = new ArrayList<ValueRange>();
  124. data.add(new ValueRange()
  125. .setRange(range)
  126. .setValues(values));
  127. // Additional ranges to update ...
  128.  
  129. BatchUpdateValuesRequest body = new BatchUpdateValuesRequest()
  130. .setValueInputOption(valueInputOption)
  131. .setData(data);
  132. BatchUpdateValuesResponse result =
  133. service.spreadsheets().values().batchUpdate(spreadsheetId, body).execute();
  134. System.out.printf("%d cells updated.", result.getTotalUpdatedCells());
  135. // [END sheets_batch_update_values]
  136. return result;
  137. }
  138.  
  139. public AppendValuesResponse appendValues(String spreadsheetId, String range,
  140. String valueInputOption, List<List<Object>> _values)
  141. throws IOException {
  142. Sheets service = this.service;
  143. // [START sheets_append_values]
  144. List<List<Object>> values = Arrays.asList(
  145. Arrays.asList(
  146. // Cell values ...
  147. )
  148. // Additional rows ...
  149. );
  150. // [START_EXCLUDE silent]
  151. values = _values;
  152. // [END_EXCLUDE]
  153. ValueRange body = new ValueRange()
  154. .setValues(values);
  155. AppendValuesResponse result =
  156. service.spreadsheets().values().append(spreadsheetId, range, body)
  157. .setValueInputOption(valueInputOption)
  158. .execute();
  159. System.out.printf("%d cells appended.", result.getUpdates().getUpdatedCells());
  160. // [END sheets_append_values]
  161. return result;
  162. }
  163.  
  164. public BatchUpdateSpreadsheetResponse pivotTables(String spreadsheetId) throws IOException {
  165. Sheets service = this.service;
  166.  
  167. // Create two sheets for our pivot table.
  168. List<Request> sheetsRequests = new ArrayList<>();
  169. sheetsRequests.add(new Request().setAddSheet(new AddSheetRequest()));
  170. sheetsRequests.add(new Request().setAddSheet(new AddSheetRequest()));
  171.  
  172. BatchUpdateSpreadsheetRequest createSheetsBody = new BatchUpdateSpreadsheetRequest()
  173. .setRequests(sheetsRequests);
  174. BatchUpdateSpreadsheetResponse createSheetsResponse = service.spreadsheets()
  175. .batchUpdate(spreadsheetId, createSheetsBody).execute();
  176. int sourceSheetId = createSheetsResponse.getReplies().get(0).getAddSheet().getProperties()
  177. .getSheetId();
  178. int targetSheetId = createSheetsResponse.getReplies().get(1).getAddSheet().getProperties()
  179. .getSheetId();
  180.  
  181. // [START sheets_pivot_tables]
  182. PivotTable pivotTable = new PivotTable()
  183. .setSource(
  184. new GridRange()
  185. .setSheetId(sourceSheetId)
  186. .setStartRowIndex(0)
  187. .setStartColumnIndex(0)
  188. .setEndRowIndex(20)
  189. .setEndColumnIndex(7)
  190. )
  191. .setRows(Collections.singletonList(
  192. new PivotGroup()
  193. .setSourceColumnOffset(1)
  194. .setShowTotals(true)
  195. .setSortOrder("ASCENDING")
  196. ))
  197. .setColumns(Collections.singletonList(
  198. new PivotGroup()
  199. .setSourceColumnOffset(4)
  200. .setShowTotals(true)
  201. .setSortOrder("ASCENDING")
  202. ))
  203. .setValues(Collections.singletonList(
  204. new PivotValue()
  205. .setSummarizeFunction("COUNTA")
  206. .setSourceColumnOffset(4)
  207. ));
  208. List<Request> requests = Lists.newArrayList();
  209. Request updateCellsRequest = new Request().setUpdateCells(new UpdateCellsRequest()
  210. .setFields("*")
  211. .setRows(Collections.singletonList(
  212. new RowData().setValues(
  213. Collections.singletonList(
  214. new CellData().setPivotTable(pivotTable))
  215. )
  216. ))
  217. .setStart(new GridCoordinate()
  218. .setSheetId(targetSheetId)
  219. .setRowIndex(0)
  220. .setColumnIndex(0)
  221.  
  222. ));
  223.  
  224. requests.add(updateCellsRequest);
  225. BatchUpdateSpreadsheetRequest updateCellsBody = new BatchUpdateSpreadsheetRequest()
  226. .setRequests(requests);
  227. BatchUpdateSpreadsheetResponse result = service.spreadsheets()
  228. .batchUpdate(spreadsheetId, updateCellsBody).execute();
  229. // [END sheets_pivot_tables]
  230. return result;
  231. }
  232.  
  233. public BatchUpdateSpreadsheetResponse conditionalFormat(String spreadsheetId)
  234. throws IOException {
  235. // [START sheets_conditional_formatting]
  236. List<GridRange> ranges = Collections.singletonList(new GridRange()
  237. .setSheetId(0)
  238. .setStartRowIndex(1)
  239. .setEndRowIndex(11)
  240. .setStartColumnIndex(0)
  241. .setEndColumnIndex(4)
  242. );
  243. List<Request> requests = Arrays.asList(
  244. new Request().setAddConditionalFormatRule(new AddConditionalFormatRuleRequest()
  245. .setRule(new ConditionalFormatRule()
  246. .setRanges(ranges)
  247. .setBooleanRule(new BooleanRule()
  248. .setCondition(new BooleanCondition()
  249. .setType("CUSTOM_FORMULA")
  250. .setValues(Collections.singletonList(
  251. new ConditionValue().setUserEnteredValue(
  252. "=GT($D2,median($D$2:$D$11))")
  253. ))
  254. )
  255. .setFormat(new CellFormat().setTextFormat(
  256. new TextFormat().setForegroundColor(
  257. new Color().setRed(0.8f))
  258. ))
  259. )
  260. )
  261. .setIndex(0)
  262. ),
  263. new Request().setAddConditionalFormatRule(new AddConditionalFormatRuleRequest()
  264. .setRule(new ConditionalFormatRule()
  265. .setRanges(ranges)
  266. .setBooleanRule(new BooleanRule()
  267. .setCondition(new BooleanCondition()
  268. .setType("CUSTOM_FORMULA")
  269. .setValues(Collections.singletonList(
  270. new ConditionValue().setUserEnteredValue(
  271. "=LT($D2,median($D$2:$D$11))")
  272. ))
  273. )
  274. .setFormat(new CellFormat().setBackgroundColor(
  275. new Color().setRed(1f).setGreen(0.4f).setBlue(0.4f)
  276. ))
  277. )
  278. )
  279. .setIndex(0)
  280. )
  281. );
  282.  
  283. BatchUpdateSpreadsheetRequest body = new BatchUpdateSpreadsheetRequest()
  284. .setRequests(requests);
  285. BatchUpdateSpreadsheetResponse result = service.spreadsheets()
  286. .batchUpdate(spreadsheetId, body)
  287. .execute();
  288. System.out.printf("%d cells updated.", result.getReplies().size());
  289. // [END sheets_conditional_formatting]
  290. return result;
  291. }
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement