microsoft-graph 2.26.0 → 2.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/models/Border.d.ts +16 -0
- package/dist/cjs/models/Border.d.ts.map +1 -0
- package/dist/cjs/models/Border.js +2 -0
- package/dist/cjs/models/Cell.d.ts +90 -7
- package/dist/cjs/models/Cell.d.ts.map +1 -1
- package/dist/cjs/models/Color.d.ts +9 -0
- package/dist/cjs/models/Color.d.ts.map +1 -0
- package/dist/cjs/models/Color.js +2 -0
- package/dist/cjs/models/Column.d.ts +5 -0
- package/dist/cjs/models/Column.d.ts.map +1 -1
- package/dist/cjs/models/Column.js +5 -1
- package/dist/cjs/models/DataSource.d.ts +49 -0
- package/dist/cjs/models/DataSource.d.ts.map +1 -0
- package/dist/cjs/models/DataSource.js +8 -0
- package/dist/cjs/models/FontName.d.ts +9 -0
- package/dist/cjs/models/FontName.d.ts.map +1 -0
- package/dist/cjs/models/FontName.js +2 -0
- package/dist/cjs/models/Row.d.ts +3 -0
- package/dist/cjs/models/Row.d.ts.map +1 -1
- package/dist/cjs/operations/workbookRange/getWorkbookWorksheetRange.d.ts +6 -1
- package/dist/cjs/operations/workbookRange/getWorkbookWorksheetRange.d.ts.map +1 -1
- package/dist/cjs/operations/workbookRange/getWorkbookWorksheetRange.js +9 -2
- package/dist/cjs/operations/workbookRange/listWorkbookRangeBorders.d.ts +16 -0
- package/dist/cjs/operations/workbookRange/listWorkbookRangeBorders.d.ts.map +1 -0
- package/dist/cjs/operations/workbookRange/listWorkbookRangeBorders.js +33 -0
- package/dist/cjs/operations/workbookRange/setWorkbookRangeBorder.d.ts +19 -0
- package/dist/cjs/operations/workbookRange/setWorkbookRangeBorder.d.ts.map +1 -0
- package/dist/cjs/operations/workbookRange/setWorkbookRangeBorder.js +44 -0
- package/dist/cjs/services/addressManipulation.d.ts.map +1 -1
- package/dist/cjs/services/addressManipulation.js +2 -1
- package/dist/cjs/services/cartesianAddress.js +2 -2
- package/dist/cjs/services/dataSource.d.ts +69 -0
- package/dist/cjs/services/dataSource.d.ts.map +1 -0
- package/dist/cjs/services/dataSource.js +195 -0
- package/dist/cjs/services/iteration.d.ts +1 -0
- package/dist/cjs/services/iteration.d.ts.map +1 -1
- package/dist/cjs/services/iteration.js +1 -0
- package/dist/cjs/tasks/deleteDriveItemWithRetry.d.ts +1 -0
- package/dist/cjs/tasks/deleteDriveItemWithRetry.d.ts.map +1 -1
- package/dist/cjs/tasks/deleteDriveItemWithRetry.js +1 -0
- package/dist/cjs/tasks/iterateRows.d.ts +24 -0
- package/dist/cjs/tasks/iterateRows.d.ts.map +1 -0
- package/dist/cjs/tasks/iterateRows.js +127 -0
- package/dist/cjs/tasks/iterateWorkbookRange.d.ts.map +1 -1
- package/dist/cjs/tasks/iterateWorkbookRange.js +7 -0
- package/dist/cjs/tasks/readWorkbookRows.d.ts.map +1 -1
- package/dist/cjs/tasks/readWorkbookRows.js +8 -0
- package/dist/cjs/tasks/setColumnHidden.d.ts +5 -0
- package/dist/cjs/tasks/setColumnHidden.d.ts.map +1 -1
- package/dist/cjs/tasks/setColumnHidden.js +5 -0
- package/dist/cjs/tasks/setRowHidden.d.ts +5 -0
- package/dist/cjs/tasks/setRowHidden.d.ts.map +1 -1
- package/dist/cjs/tasks/setRowHidden.js +5 -0
- package/dist/cjs/tasks/setWorkbookRangeValues.d.ts +7 -2
- package/dist/cjs/tasks/setWorkbookRangeValues.d.ts.map +1 -1
- package/dist/cjs/tasks/setWorkbookRangeValues.js +7 -2
- package/dist/esm/models/Border.d.ts +16 -0
- package/dist/esm/models/Border.d.ts.map +1 -0
- package/dist/esm/models/Border.js +1 -0
- package/dist/esm/models/Cell.d.ts +90 -7
- package/dist/esm/models/Cell.d.ts.map +1 -1
- package/dist/esm/models/Color.d.ts +9 -0
- package/dist/esm/models/Color.d.ts.map +1 -0
- package/dist/esm/models/Color.js +1 -0
- package/dist/esm/models/Column.d.ts +5 -0
- package/dist/esm/models/Column.d.ts.map +1 -1
- package/dist/esm/models/Column.js +5 -1
- package/dist/esm/models/DataSource.d.ts +49 -0
- package/dist/esm/models/DataSource.d.ts.map +1 -0
- package/dist/esm/models/DataSource.js +7 -0
- package/dist/esm/models/FontName.d.ts +9 -0
- package/dist/esm/models/FontName.d.ts.map +1 -0
- package/dist/esm/models/FontName.js +1 -0
- package/dist/esm/models/Row.d.ts +3 -0
- package/dist/esm/models/Row.d.ts.map +1 -1
- package/dist/esm/operations/workbookRange/getWorkbookWorksheetRange.d.ts +6 -1
- package/dist/esm/operations/workbookRange/getWorkbookWorksheetRange.d.ts.map +1 -1
- package/dist/esm/operations/workbookRange/getWorkbookWorksheetRange.js +9 -2
- package/dist/esm/operations/workbookRange/listWorkbookRangeBorders.d.ts +16 -0
- package/dist/esm/operations/workbookRange/listWorkbookRangeBorders.d.ts.map +1 -0
- package/dist/esm/operations/workbookRange/listWorkbookRangeBorders.js +30 -0
- package/dist/esm/operations/workbookRange/setWorkbookRangeBorder.d.ts +19 -0
- package/dist/esm/operations/workbookRange/setWorkbookRangeBorder.d.ts.map +1 -0
- package/dist/esm/operations/workbookRange/setWorkbookRangeBorder.js +41 -0
- package/dist/esm/services/addressManipulation.d.ts.map +1 -1
- package/dist/esm/services/addressManipulation.js +2 -1
- package/dist/esm/services/cartesianAddress.js +2 -2
- package/dist/esm/services/dataSource.d.ts +69 -0
- package/dist/esm/services/dataSource.d.ts.map +1 -0
- package/dist/esm/services/dataSource.js +184 -0
- package/dist/esm/services/iteration.d.ts +1 -0
- package/dist/esm/services/iteration.d.ts.map +1 -1
- package/dist/esm/services/iteration.js +1 -0
- package/dist/esm/tasks/deleteDriveItemWithRetry.d.ts +1 -0
- package/dist/esm/tasks/deleteDriveItemWithRetry.d.ts.map +1 -1
- package/dist/esm/tasks/deleteDriveItemWithRetry.js +1 -0
- package/dist/esm/tasks/iterateRows.d.ts +24 -0
- package/dist/esm/tasks/iterateRows.d.ts.map +1 -0
- package/dist/esm/tasks/iterateRows.js +121 -0
- package/dist/esm/tasks/iterateWorkbookRange.d.ts.map +1 -1
- package/dist/esm/tasks/iterateWorkbookRange.js +7 -0
- package/dist/esm/tasks/readWorkbookRows.d.ts.map +1 -1
- package/dist/esm/tasks/readWorkbookRows.js +8 -0
- package/dist/esm/tasks/setColumnHidden.d.ts +5 -0
- package/dist/esm/tasks/setColumnHidden.d.ts.map +1 -1
- package/dist/esm/tasks/setColumnHidden.js +5 -0
- package/dist/esm/tasks/setRowHidden.d.ts +5 -0
- package/dist/esm/tasks/setRowHidden.d.ts.map +1 -1
- package/dist/esm/tasks/setRowHidden.js +5 -0
- package/dist/esm/tasks/setWorkbookRangeValues.d.ts +7 -2
- package/dist/esm/tasks/setWorkbookRangeValues.d.ts.map +1 -1
- package/dist/esm/tasks/setWorkbookRangeValues.js +7 -2
- package/docs/api/Border.md +55 -0
- package/docs/api/Cell.md +94 -13
- package/docs/api/Color.md +19 -0
- package/docs/api/Column.md +12 -2
- package/docs/api/DataSource-1.md +191 -0
- package/docs/api/FontName.md +19 -0
- package/docs/api/Iteration.md +3 -1
- package/docs/api/README.md +11 -10
- package/docs/api/Row.md +5 -3
- package/docs/api/addressManipulation.md +3 -3
- package/docs/api/dataSource.md +204 -0
- package/docs/api/deleteWorkbookRange.md +1 -1
- package/docs/api/getWorkbookWorksheetByName.md +1 -1
- package/docs/api/getWorkbookWorksheetRange.md +6 -2
- package/docs/api/insertWorkbookCells.md +1 -1
- package/docs/api/iterateRows.md +43 -0
- package/docs/api/listWorkbookRangeBorders.md +31 -0
- package/docs/api/readWorkbookRows.md +1 -1
- package/docs/api/{tasks/setColumnHidden.md → setColumnHidden.md} +6 -4
- package/docs/api/{tasks/setRowHidden.md → setRowHidden.md} +6 -4
- package/docs/api/setWorkbookRangeBorder.md +33 -0
- package/docs/topics/README.md +2 -1
- package/docs/topics/versioning.md +17 -0
- package/package.json +201 -1
- package/docs/api/deleteDriveItemWithRetry.md +0 -33
- package/docs/api/tasks/setWorkbookRangeValues.md +0 -3
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tooling for easily creating, updating, and deleting items in a worksheet or range.
|
|
3
|
+
* @module dataSource
|
|
4
|
+
* @category Services
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
import InvalidOperationError from "../errors/InvalidOperationError.js";
|
|
8
|
+
import ProtocolError from "../errors/ProtocolError.js";
|
|
9
|
+
import deleteWorkbookRange from "../operations/workbookRange/deleteWorkbookRange.js";
|
|
10
|
+
import getWorkbookWorksheetRange from "../operations/workbookRange/getWorkbookWorksheetRange.js";
|
|
11
|
+
import insertWorkbookCells from "../operations/workbookRange/insertWorkbookCells.js";
|
|
12
|
+
import updateWorkbookRange from "../operations/workbookRange/updateWorkbookRange.js";
|
|
13
|
+
import getWorkbookWorksheetUsedRangeRef from "../operations/workbookWorksheet/getWorkbookWorksheetUsedRangeRef.js";
|
|
14
|
+
import readWorkbookRows from "../tasks/readWorkbookRows.js";
|
|
15
|
+
import { countAddressRows, subRange, superRange } from "./addressManipulation.js";
|
|
16
|
+
import { addressToCartesian } from "./cartesianAddress.js";
|
|
17
|
+
import { generalCellFormat } from "./cellFormat.js";
|
|
18
|
+
/**
|
|
19
|
+
* Define a datasource from an entire worksheet.
|
|
20
|
+
* @template T Type of the record, extending RecordBase.
|
|
21
|
+
* @param worksheetRef Workbook range reference to define the data source on.
|
|
22
|
+
* @param decode Function to decode a row into a record.
|
|
23
|
+
* @param encode Function to encode a record into a row. Optional.
|
|
24
|
+
* @returns The initialized data source.
|
|
25
|
+
* @experimental
|
|
26
|
+
*/
|
|
27
|
+
export async function dataSourceFromWorksheet(worksheetRef, decode, encode = null) {
|
|
28
|
+
const rangeRef = await getWorkbookWorksheetUsedRangeRef(worksheetRef);
|
|
29
|
+
return dataSourceFromRange(rangeRef, decode, encode);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Defines a data source from a given range.
|
|
33
|
+
* @template T Type of the record, extending RecordBase.
|
|
34
|
+
* @param rangeRef Workbook range reference to define the data source on.
|
|
35
|
+
* @param decode Function to decode a row into a record.
|
|
36
|
+
* @param encode Function to encode a record into a row. Optional.
|
|
37
|
+
* @returns The initialized data source.
|
|
38
|
+
* @experimental
|
|
39
|
+
*/
|
|
40
|
+
export async function dataSourceFromRange(rangeRef, decode, encode = null) {
|
|
41
|
+
if (countAddressRows(rangeRef.address) < 1) {
|
|
42
|
+
throw new InvalidOperationError("Cannot create a data source from an empty range. It must at least contain a header row.");
|
|
43
|
+
}
|
|
44
|
+
const headRef = subRange(rangeRef, 0, 1);
|
|
45
|
+
const bodyRef = subRange(rangeRef, 1);
|
|
46
|
+
const head = await getHead(headRef);
|
|
47
|
+
const { ay: bodyOffset } = addressToCartesian(bodyRef.address);
|
|
48
|
+
const source = {
|
|
49
|
+
bodyRef,
|
|
50
|
+
bodyOffset,
|
|
51
|
+
coding: {
|
|
52
|
+
decode,
|
|
53
|
+
encode,
|
|
54
|
+
},
|
|
55
|
+
head,
|
|
56
|
+
async *[Symbol.asyncIterator]() {
|
|
57
|
+
let index = 0;
|
|
58
|
+
for await (const row of readWorkbookRows(source.bodyRef)) {
|
|
59
|
+
const record = rowToRecord(row, source);
|
|
60
|
+
const rowNumber = indexToRowNumber(source.bodyOffset, index);
|
|
61
|
+
yield {
|
|
62
|
+
index,
|
|
63
|
+
rowNumber,
|
|
64
|
+
record,
|
|
65
|
+
};
|
|
66
|
+
index++;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
return source;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Reads all items from the data source.
|
|
74
|
+
* @template T Type of the record, extending RecordBase.
|
|
75
|
+
* @param source Data source to read from.
|
|
76
|
+
* @returns Array of all items in the data source.
|
|
77
|
+
* @deprecated Iterate on the source directly using `for await (const item of source)`.
|
|
78
|
+
*/
|
|
79
|
+
export async function* listItems(source) {
|
|
80
|
+
for await (const item of source) {
|
|
81
|
+
yield item;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates a new item in the data source.
|
|
86
|
+
* @template T Type of the record, extending RecordBase.
|
|
87
|
+
* @param source Data source to insert into. Must be initialized.
|
|
88
|
+
* @param record Record to insert.
|
|
89
|
+
* @param after Index after which to insert the new item. If null, inserts at the end. If -1 inserts at top.
|
|
90
|
+
* @returns Newly created item, including its index, row number, and record.
|
|
91
|
+
* @throws {InvalidOperationError} If the data source is not initialized.
|
|
92
|
+
* @throws {InvalidArgumentError} If the 'after' index is out of range.
|
|
93
|
+
* @experimental
|
|
94
|
+
*/
|
|
95
|
+
export async function createItem(source, record, after = null) {
|
|
96
|
+
const count = countAddressRows(source.bodyRef.address);
|
|
97
|
+
const index = (after === null ? count : after + 1);
|
|
98
|
+
const rowNumber = indexToRowNumber(source.bodyOffset, index);
|
|
99
|
+
await insertWorkbookCells(superRange(source.bodyRef, index, 1), "Down");
|
|
100
|
+
source.bodyRef = superRange(source.bodyRef, 0, count + 1);
|
|
101
|
+
await updateItem(source, index, record);
|
|
102
|
+
return {
|
|
103
|
+
index,
|
|
104
|
+
rowNumber,
|
|
105
|
+
record,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Updates an item in the data source at the specified index.
|
|
110
|
+
* @template T Type of the record, extending RecordBase.
|
|
111
|
+
* @param source Data source to update. Must be initialized.
|
|
112
|
+
* @param index Index of the item to update.
|
|
113
|
+
* @param record New record to write at the specified index.
|
|
114
|
+
* @throws {InvalidOperationError} If the data source is not initialized.
|
|
115
|
+
* @throws {InvalidArgumentError} If the index is out of range.
|
|
116
|
+
* @experimental
|
|
117
|
+
*/
|
|
118
|
+
export async function updateItem(source, index, record) {
|
|
119
|
+
const row = recordToRow(record, source);
|
|
120
|
+
const rowRef = subRange(source.bodyRef, index, 1);
|
|
121
|
+
await updateWorkbookRange(rowRef, {
|
|
122
|
+
values: [row.map((x) => x.value)],
|
|
123
|
+
text: [row.map((x) => x.text)],
|
|
124
|
+
numberFormat: [row.map((x) => x.format)],
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Deletes an item from the data source at the specified index.
|
|
129
|
+
* @template T Type of the record, extending RecordBase.
|
|
130
|
+
* @param source Data source to delete from. Must be initialized.
|
|
131
|
+
* @param index Index of the item to delete.
|
|
132
|
+
* @throws {InvalidOperationError} If the data source is not initialized.
|
|
133
|
+
* @experimental
|
|
134
|
+
*/
|
|
135
|
+
export async function deleteItem(source, index) {
|
|
136
|
+
const rowRef = subRange(source.bodyRef, index, 1);
|
|
137
|
+
await deleteWorkbookRange(rowRef, "Up");
|
|
138
|
+
source.bodyRef = subRange(source.bodyRef, 0, -1);
|
|
139
|
+
}
|
|
140
|
+
function rowToRecord(row, source) {
|
|
141
|
+
const sourceRow = source.head.reduce((acc, heading, columnIndex) => {
|
|
142
|
+
const cell = row[columnIndex];
|
|
143
|
+
if (!cell) {
|
|
144
|
+
throw new ProtocolError(`Cell for '${heading}' is undefined`);
|
|
145
|
+
}
|
|
146
|
+
acc[heading] = cell;
|
|
147
|
+
return acc;
|
|
148
|
+
}, {});
|
|
149
|
+
const record = source.coding.decode(sourceRow);
|
|
150
|
+
return record;
|
|
151
|
+
}
|
|
152
|
+
function recordToRow(record, source) {
|
|
153
|
+
if (!source.coding.encode) {
|
|
154
|
+
throw new InvalidOperationError("Data source does not have an encoder defined. Add an encoder for reading.");
|
|
155
|
+
}
|
|
156
|
+
const sourceRow = source.coding.encode(record);
|
|
157
|
+
const row = source.head.map((heading) => {
|
|
158
|
+
const cell = sourceRow[heading];
|
|
159
|
+
if (cell === undefined) {
|
|
160
|
+
throw new Error(`Encoder produced undefined value for '${heading}'.`); // TODO: Make more specific error
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
value: cell.value ?? "",
|
|
164
|
+
text: cell.text ?? (cell.value ?? "").toString(),
|
|
165
|
+
format: cell.format ?? generalCellFormat,
|
|
166
|
+
style: {
|
|
167
|
+
merge: {},
|
|
168
|
+
alignment: {},
|
|
169
|
+
borders: {},
|
|
170
|
+
fill: {},
|
|
171
|
+
font: {},
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
return row;
|
|
176
|
+
}
|
|
177
|
+
function indexToRowNumber(bodyOffset, index) {
|
|
178
|
+
return (bodyOffset + index + 1); // +1 to convert to 1-based index
|
|
179
|
+
}
|
|
180
|
+
async function getHead(headRef) {
|
|
181
|
+
const headRange = await getWorkbookWorksheetRange(headRef);
|
|
182
|
+
const head = headRange.text[0].map((x) => x);
|
|
183
|
+
return head;
|
|
184
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iteration.d.ts","sourceRoot":"","sources":["../../../src/services/iteration.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"iteration.d.ts","sourceRoot":"","sources":["../../../src/services/iteration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAMhF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteDriveItemWithRetry.d.ts","sourceRoot":"","sources":["../../../src/tasks/deleteDriveItemWithRetry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"deleteDriveItemWithRetry.d.ts","sourceRoot":"","sources":["../../../src/tasks/deleteDriveItemWithRetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D;;;;;;GAMG;AACH,wBAA8B,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAahG"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Delete a drive item, avoiding locking issues through automatic retries.
|
|
3
3
|
* @module deleteDriveItemWithRetry
|
|
4
4
|
* @category Tasks
|
|
5
|
+
* @hidden
|
|
5
6
|
*/
|
|
6
7
|
import deleteDriveItem from "../operations/driveItem/deleteDriveItem.js";
|
|
7
8
|
import { sleep } from "../services/sleep.js";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Iterate over the rows in a given worksheet range.
|
|
3
|
+
* @module iterateRows
|
|
4
|
+
* @category Tasks
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
import type { CellScope } from "../models/Cell.ts";
|
|
8
|
+
import type { Row } from "../models/Row.ts";
|
|
9
|
+
import type { WorkbookRangeRef } from "../models/WorkbookRange.ts";
|
|
10
|
+
/**
|
|
11
|
+
* Iterate over the rows in a given worksheet range.
|
|
12
|
+
* @param rangeRef Reference to the workbook range to iterate over.
|
|
13
|
+
* @param skip Number of rows to skip before starting to yield rows. Can be negative to get last rows (e.g., -1 for the last row).
|
|
14
|
+
* @param take Max number of rows to yield. `POSITIVE_INFINITY` returns all rows.
|
|
15
|
+
* @param scope Amount of detail to include for each cell.
|
|
16
|
+
* @param maxCellsPerOperation Prescribe max cells to retrieve per operation. `null` automatically determines value. DO NOT SET EXCEPT FOR ADVANCED TUNING.
|
|
17
|
+
* @remarks Including `style` in the scope requires over three operations for each and every cell. Use this sparingly!
|
|
18
|
+
* @example
|
|
19
|
+
* for await (const row of iterateRows(rangeRef)) {
|
|
20
|
+
* console.log(row);
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
export declare function iterateRows(rangeRef: WorkbookRangeRef, skip?: number, take?: number, scope?: Partial<CellScope>, maxCellsPerOperation?: number | null): AsyncIterable<Row>;
|
|
24
|
+
//# sourceMappingURL=iterateRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterateRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateRows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAA6C,SAAS,EAAwE,MAAM,mBAAmB,CAAC;AAGpK,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAWnE;;;;;;;;;;;;GAYG;AACH,wBAAuB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,SAAI,EAAE,IAAI,GAAE,MAAiC,EAAE,KAAK,GAAE,OAAO,CAAC,SAAS,CAAgB,EAAE,oBAAoB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAiC1N"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Iterate over the rows in a given worksheet range.
|
|
3
|
+
* @module iterateRows
|
|
4
|
+
* @category Tasks
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
import InvalidArgumentError from "../errors/InvalidArgumentError.js";
|
|
8
|
+
import getWorkbookRangeFill from "../operations/workbookRange/getWorkbookRangeFill.js";
|
|
9
|
+
import getWorkbookRangeFont from "../operations/workbookRange/getWorkbookRangeFont.js";
|
|
10
|
+
import getWorkbookRangeFormat from "../operations/workbookRange/getWorkbookRangeFormat.js";
|
|
11
|
+
import getWorkbookWorksheetRange from "../operations/workbookRange/getWorkbookWorksheetRange.js";
|
|
12
|
+
import listWorkbookRangeBorders from "../operations/workbookRange/listWorkbookRangeBorders.js";
|
|
13
|
+
import { countAddressColumns, countAddressRows, subRange } from "../services/addressManipulation.js";
|
|
14
|
+
import { maxCellsPerRequest } from "../services/batch.js";
|
|
15
|
+
const defaultScope = { values: true, text: true, format: true };
|
|
16
|
+
/**
|
|
17
|
+
* Iterate over the rows in a given worksheet range.
|
|
18
|
+
* @param rangeRef Reference to the workbook range to iterate over.
|
|
19
|
+
* @param skip Number of rows to skip before starting to yield rows. Can be negative to get last rows (e.g., -1 for the last row).
|
|
20
|
+
* @param take Max number of rows to yield. `POSITIVE_INFINITY` returns all rows.
|
|
21
|
+
* @param scope Amount of detail to include for each cell.
|
|
22
|
+
* @param maxCellsPerOperation Prescribe max cells to retrieve per operation. `null` automatically determines value. DO NOT SET EXCEPT FOR ADVANCED TUNING.
|
|
23
|
+
* @remarks Including `style` in the scope requires over three operations for each and every cell. Use this sparingly!
|
|
24
|
+
* @example
|
|
25
|
+
* for await (const row of iterateRows(rangeRef)) {
|
|
26
|
+
* console.log(row);
|
|
27
|
+
* }
|
|
28
|
+
*/
|
|
29
|
+
export async function* iterateRows(rangeRef, skip = 0, take = Number.POSITIVE_INFINITY, scope = defaultScope, maxCellsPerOperation = null) {
|
|
30
|
+
const totalRangeRef = subRange(rangeRef, skip, take);
|
|
31
|
+
const totalColumnCount = countAddressColumns(totalRangeRef.address);
|
|
32
|
+
const totalRowCount = countAddressRows(totalRangeRef.address);
|
|
33
|
+
const maxRowsPerOperation = calculateMaxRowsPerOperation(totalColumnCount, maxCellsPerOperation);
|
|
34
|
+
const rangeSelect = scopeToRangeSelect(scope);
|
|
35
|
+
for (let operationRowStart = 0; operationRowStart < totalRowCount; operationRowStart += maxRowsPerOperation) {
|
|
36
|
+
const operationRowCount = Math.min(maxRowsPerOperation, totalRowCount - operationRowStart);
|
|
37
|
+
const operationRangeRef = subRange(totalRangeRef, operationRowStart, operationRowCount);
|
|
38
|
+
const range = rangeSelect ? await getWorkbookWorksheetRange(operationRangeRef, rangeSelect) : null;
|
|
39
|
+
for (let rowIndex = 0; rowIndex < operationRowCount; rowIndex++) {
|
|
40
|
+
const row = [];
|
|
41
|
+
for (let columnIndex = 0; columnIndex < totalColumnCount; columnIndex++) {
|
|
42
|
+
const value = (range?.values?.[rowIndex]?.[columnIndex] ?? ""); // The root of these is undefined if that detail isn't in scope
|
|
43
|
+
const text = (range?.text?.[rowIndex]?.[columnIndex] ?? "");
|
|
44
|
+
const format = (range?.numberFormat?.[rowIndex]?.[columnIndex] ?? "");
|
|
45
|
+
const style = await getStyle(subRange(rangeRef, rowIndex, 1, columnIndex, 1), scope); // This line is potentially expensive
|
|
46
|
+
row.push({
|
|
47
|
+
value,
|
|
48
|
+
text,
|
|
49
|
+
format,
|
|
50
|
+
style,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
yield row;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async function getStyle(rangeRef, scope) {
|
|
58
|
+
const alignment = scope.alignment ? await getWorkbookRangeFormat(rangeRef) : null;
|
|
59
|
+
const borders = scope.borders ? await listWorkbookRangeBorders(rangeRef) : null;
|
|
60
|
+
const fill = scope.fill ? await getWorkbookRangeFill(rangeRef) : null;
|
|
61
|
+
const font = scope.font ? await getWorkbookRangeFont(rangeRef) : null;
|
|
62
|
+
return {
|
|
63
|
+
merge: {
|
|
64
|
+
/* Not provided by API */
|
|
65
|
+
},
|
|
66
|
+
alignment: {
|
|
67
|
+
vertical: alignment?.verticalAlignment,
|
|
68
|
+
horizontal: alignment?.horizontalAlignment,
|
|
69
|
+
wrapText: alignment?.wrapText ?? undefined,
|
|
70
|
+
},
|
|
71
|
+
borders: {
|
|
72
|
+
top: extractBorderStyle(borders, "EdgeTop"),
|
|
73
|
+
bottom: extractBorderStyle(borders, "EdgeBottom"),
|
|
74
|
+
left: extractBorderStyle(borders, "EdgeLeft"),
|
|
75
|
+
right: extractBorderStyle(borders, "EdgeRight"),
|
|
76
|
+
insideVertical: extractBorderStyle(borders, "InsideVertical"),
|
|
77
|
+
insideHorizontal: extractBorderStyle(borders, "InsideHorizontal"),
|
|
78
|
+
diagonalDown: extractBorderStyle(borders, "DiagonalDown"),
|
|
79
|
+
diagonalUp: extractBorderStyle(borders, "DiagonalUp"),
|
|
80
|
+
},
|
|
81
|
+
fill: {
|
|
82
|
+
color: fill?.color,
|
|
83
|
+
},
|
|
84
|
+
font: {
|
|
85
|
+
name: font?.name,
|
|
86
|
+
size: font?.size,
|
|
87
|
+
color: font?.color,
|
|
88
|
+
bold: font?.bold,
|
|
89
|
+
italic: font?.italic,
|
|
90
|
+
underline: font?.underline,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
function extractBorderStyle(borders, side) {
|
|
94
|
+
if (!borders) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const border = borders.find((x) => x.sideIndex === side);
|
|
98
|
+
if (!border) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
color: border.color,
|
|
103
|
+
style: border.style,
|
|
104
|
+
weight: border.weight,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function calculateMaxRowsPerOperation(columnCount, overwriteMaxCellsPerOperation) {
|
|
109
|
+
const maxCellsPerOperation = overwriteMaxCellsPerOperation ?? maxCellsPerRequest;
|
|
110
|
+
const maxRowsPerOperation = Math.floor(maxCellsPerOperation / columnCount);
|
|
111
|
+
if (maxRowsPerOperation < 1) {
|
|
112
|
+
throw new InvalidArgumentError("maxCellsPerOperation must be greater than or equal to the number of columns in the range.");
|
|
113
|
+
}
|
|
114
|
+
return maxRowsPerOperation;
|
|
115
|
+
}
|
|
116
|
+
function scopeToRangeSelect(scope) {
|
|
117
|
+
if (!(scope.values || scope.text || scope.format)) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return { values: scope.values ?? false, text: scope.text ?? false, numberFormat: scope.format ?? false };
|
|
121
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterateWorkbookRange.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateWorkbookRange.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAOnE;;;;;;;;GAQG;AACH,wBAA+B,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"iterateWorkbookRange.d.ts","sourceRoot":"","sources":["../../../src/tasks/iterateWorkbookRange.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAOnE;;;;;;;;GAQG;AACH,wBAA+B,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC,CAiEhL"}
|
|
@@ -52,6 +52,13 @@ export default async function* iterateWorkbookRange(rangeRef, overwriteRowsPerRe
|
|
|
52
52
|
text: text[r]?.[c] ?? "",
|
|
53
53
|
value: values[r]?.[c] ?? "",
|
|
54
54
|
format: format?.[r]?.[c] ?? "",
|
|
55
|
+
style: {
|
|
56
|
+
merge: {},
|
|
57
|
+
alignment: {},
|
|
58
|
+
borders: {},
|
|
59
|
+
fill: {},
|
|
60
|
+
font: {},
|
|
61
|
+
},
|
|
55
62
|
}));
|
|
56
63
|
yield {
|
|
57
64
|
rowOffset: offset,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readWorkbookRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/readWorkbookRows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"readWorkbookRows.d.ts","sourceRoot":"","sources":["../../../src/tasks/readWorkbookRows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAenE;;;;;;;GAOG;AACH,wBAA+B,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,wBAAwB,GAAE,MAAM,GAAG,IAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAoD9I"}
|
|
@@ -9,6 +9,13 @@ import { composeAddress, countAddressColumns, decomposeAddress } from "../servic
|
|
|
9
9
|
import { columnAddressToOffset, rowAddressToOffset, rowOffsetToAddress } from "../services/addressOffset.js";
|
|
10
10
|
import { maxCellsPerRequest } from "../services/batch.js";
|
|
11
11
|
import { createWorkbookRangeRef } from "../services/workbookRange.js";
|
|
12
|
+
const emptyStyle = {
|
|
13
|
+
merge: {},
|
|
14
|
+
alignment: {},
|
|
15
|
+
borders: {},
|
|
16
|
+
fill: {},
|
|
17
|
+
font: {},
|
|
18
|
+
};
|
|
12
19
|
/**
|
|
13
20
|
* Iterates over the rows in a given worksheet range.
|
|
14
21
|
*
|
|
@@ -50,6 +57,7 @@ export default async function* readWorkbookRows(rangeRef, overwriteMaxRowsPerChu
|
|
|
50
57
|
text: text[r]?.[c] ?? "",
|
|
51
58
|
value: values[r]?.[c] ?? "",
|
|
52
59
|
format: numberFormat?.[r]?.[c] ?? "",
|
|
60
|
+
style: emptyStyle,
|
|
53
61
|
}));
|
|
54
62
|
yield row;
|
|
55
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setColumnHidden.d.ts","sourceRoot":"","sources":["../../../src/tasks/setColumnHidden.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;GAIG;AACH,wBAA8B,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxG"}
|
|
1
|
+
{"version":3,"file":"setColumnHidden.d.ts","sourceRoot":"","sources":["../../../src/tasks/setColumnHidden.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;GAIG;AACH,wBAA8B,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxG"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set one or more columns visibility.
|
|
3
|
+
* @module setColumnHidden
|
|
4
|
+
* @category Tasks
|
|
5
|
+
*/
|
|
1
6
|
import updateWorkbookRange from "../operations/workbookRange/updateWorkbookRange.js";
|
|
2
7
|
import { isAllColumnsAddress } from "../services/addressManipulation.js";
|
|
3
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setRowHidden.d.ts","sourceRoot":"","sources":["../../../src/tasks/setRowHidden.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;;GAKG;AACH,wBAA8B,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrG"}
|
|
1
|
+
{"version":3,"file":"setRowHidden.d.ts","sourceRoot":"","sources":["../../../src/tasks/setRowHidden.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;;GAKG;AACH,wBAA8B,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrG"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sets the values of a specified workbook range.
|
|
3
|
+
* @module setWorkbookRangeValues
|
|
4
|
+
* @category Tasks
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
1
7
|
import type { CellValue } from "../models/Cell.ts";
|
|
2
8
|
import type { WorkbookRangeRef } from "../models/WorkbookRange.ts";
|
|
3
9
|
/**
|
|
4
10
|
* Sets the values of a specified workbook range.
|
|
5
|
-
*
|
|
6
11
|
* @param {WorkbookRangeRef} rangeRef Reference to the workbook range to update.
|
|
7
12
|
* @param {CellRangeValues} values - The values to set in the specified workbook range. Must match the range's dimensions.
|
|
8
|
-
*
|
|
13
|
+
* @deprecated Use `writeWorkbookRows` instead.
|
|
9
14
|
* @hidden
|
|
10
15
|
*/
|
|
11
16
|
export default function setWorkbookRangeValues(rangeRef: WorkbookRangeRef, values: CellValue[][]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setWorkbookRangeValues.d.ts","sourceRoot":"","sources":["../../../src/tasks/setWorkbookRangeValues.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setWorkbookRangeValues.d.ts","sourceRoot":"","sources":["../../../src/tasks/setWorkbookRangeValues.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;;;GAMG;AACH,wBAA8B,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,iBAcrG"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sets the values of a specified workbook range.
|
|
3
|
+
* @module setWorkbookRangeValues
|
|
4
|
+
* @category Tasks
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
1
7
|
import InvalidArgumentError from "../errors/InvalidArgumentError.js";
|
|
2
8
|
import updateWorkbookRange from "../operations/workbookRange/updateWorkbookRange.js";
|
|
3
9
|
import { countAddressColumns, countAddressRows } from "../services/addressManipulation.js";
|
|
4
10
|
/**
|
|
5
11
|
* Sets the values of a specified workbook range.
|
|
6
|
-
*
|
|
7
12
|
* @param {WorkbookRangeRef} rangeRef Reference to the workbook range to update.
|
|
8
13
|
* @param {CellRangeValues} values - The values to set in the specified workbook range. Must match the range's dimensions.
|
|
9
|
-
*
|
|
14
|
+
* @deprecated Use `writeWorkbookRows` instead.
|
|
10
15
|
* @hidden
|
|
11
16
|
*/
|
|
12
17
|
export default async function setWorkbookRangeValues(rangeRef, values) {
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
[Microsoft Graph SDK](README.md) / Border
|
|
2
|
+
|
|
3
|
+
# Border
|
|
4
|
+
|
|
5
|
+
**`Experimental`**
|
|
6
|
+
|
|
7
|
+
Defining a border that could be on a cell.
|
|
8
|
+
|
|
9
|
+
## Type Aliases
|
|
10
|
+
|
|
11
|
+
### Border
|
|
12
|
+
|
|
13
|
+
> **Border** = `object`
|
|
14
|
+
|
|
15
|
+
Defined in: [src/models/Border.ts:9](https://github.com/Future-Secure-AI/microsoft-graph/blob/main/src/models/Border.ts#L9)
|
|
16
|
+
|
|
17
|
+
**`Experimental`**
|
|
18
|
+
|
|
19
|
+
#### Properties
|
|
20
|
+
|
|
21
|
+
| Property | Type | Defined in |
|
|
22
|
+
| ------ | ------ | ------ |
|
|
23
|
+
| <a id="color"></a> `color` | [`Color`](Color.md#color) | [src/models/Border.ts:10](https://github.com/Future-Secure-AI/microsoft-graph/blob/main/src/models/Border.ts#L10) |
|
|
24
|
+
| <a id="style"></a> `style` | [`BorderType`](#bordertype) | [src/models/Border.ts:11](https://github.com/Future-Secure-AI/microsoft-graph/blob/main/src/models/Border.ts#L11) |
|
|
25
|
+
| <a id="weight"></a> `weight` | [`BorderWeight`](#borderweight-1) | [src/models/Border.ts:12](https://github.com/Future-Secure-AI/microsoft-graph/blob/main/src/models/Border.ts#L12) |
|
|
26
|
+
|
|
27
|
+
***
|
|
28
|
+
|
|
29
|
+
### BorderSide
|
|
30
|
+
|
|
31
|
+
> **BorderSide** = `"EdgeTop"` \| `"EdgeBottom"` \| `"EdgeLeft"` \| `"EdgeRight"` \| `"InsideVertical"` \| `"InsideHorizontal"` \| `"DiagonalDown"` \| `"DiagonalUp"`
|
|
32
|
+
|
|
33
|
+
Defined in: [src/models/Border.ts:15](https://github.com/Future-Secure-AI/microsoft-graph/blob/main/src/models/Border.ts#L15)
|
|
34
|
+
|
|
35
|
+
**`Experimental`**
|
|
36
|
+
|
|
37
|
+
***
|
|
38
|
+
|
|
39
|
+
### BorderType
|
|
40
|
+
|
|
41
|
+
> **BorderType** = `"None"` \| `"Continuous"` \| `"Dash"` \| `"DashDot"` \| `"DashDotDot"` \| `"Dot"` \| `"Double"` \| `"SlantDashDot"`
|
|
42
|
+
|
|
43
|
+
Defined in: [src/models/Border.ts:17](https://github.com/Future-Secure-AI/microsoft-graph/blob/main/src/models/Border.ts#L17)
|
|
44
|
+
|
|
45
|
+
**`Experimental`**
|
|
46
|
+
|
|
47
|
+
***
|
|
48
|
+
|
|
49
|
+
### BorderWeight
|
|
50
|
+
|
|
51
|
+
> **BorderWeight** = `"Hairline"` \| `"Thin"` \| `"Medium"` \| `"Thick"`
|
|
52
|
+
|
|
53
|
+
Defined in: [src/models/Border.ts:19](https://github.com/Future-Secure-AI/microsoft-graph/blob/main/src/models/Border.ts#L19)
|
|
54
|
+
|
|
55
|
+
**`Experimental`**
|