test sheet exist and get worksheet id

This commit is contained in:
arc-alex
2023-11-19 19:24:56 +01:00
parent 07ebb5a321
commit e52a75db7d
+32 -7
View File
@@ -38,6 +38,27 @@ class sheet {
} }
} }
/**
* test existance of sheet and workssheet and get is index
* @param {string} sheetId - https://docs.google.com/spreadsheets/d/[[spreadsheetId]]/edit#gid=0
* @param {string} worksheet - the name of the worksheet containg ontime data
* @returns {Promise<false | number>} - false if not found | id of worksheet
* @throws
*/
public async exist(sheetId: string, worksheet: string): Promise<false | number> {
const spreadsheets = await sheets({ version: 'v4', auth: sheet.client }).spreadsheets.get({
spreadsheetId: sheetId,
});
if (spreadsheets.status === 200) {
const w = spreadsheets.data.sheets.find((p) => p.properties.title == worksheet);
if (w !== undefined) {
return w.properties.sheetId;
}
}
return false;
}
public async push(sheetId: string, worksheet: string, options = defaultExcelImportMap) { public async push(sheetId: string, worksheet: string, options = defaultExcelImportMap) {
if (!sheet.client) { if (!sheet.client) {
if (!(await this.authorized())) { if (!(await this.authorized())) {
@@ -45,6 +66,11 @@ class sheet {
} }
} }
const worksheetId = await this.exist(sheetId, worksheet);
if (!worksheetId) {
throw new Error(`Sheet not dose not exits`);
}
if (!isExcelImportMap(options)) { if (!isExcelImportMap(options)) {
throw new Error('Got incorrect options to excel import', JSON.parse(options)); throw new Error('Got incorrect options to excel import', JSON.parse(options));
} }
@@ -65,12 +91,12 @@ class sheet {
updateRundown.push({ updateRundown.push({
insertDimension: { insertDimension: {
inheritFromBefore: false, inheritFromBefore: false,
range: { dimension: 'ROWS', startIndex: titleRow + 1, endIndex: titleRow + 2, sheetId: 0 }, range: { dimension: 'ROWS', startIndex: titleRow + 1, endIndex: titleRow + 2, sheetId: worksheetId },
}, },
}); });
//and delete the rest //and delete the rest
updateRundown.push({ updateRundown.push({
deleteDimension: { range: { dimension: 'ROWS', startIndex: titleRow + 2, sheetId: 0 } }, deleteDimension: { range: { dimension: 'ROWS', startIndex: titleRow + 2, sheetId: worksheetId } },
}); });
// insert the lenght of the rundown // insert the lenght of the rundown
updateRundown.push({ updateRundown.push({
@@ -80,7 +106,7 @@ class sheet {
dimension: 'ROWS', dimension: 'ROWS',
startIndex: titleRow + 1, startIndex: titleRow + 1,
endIndex: titleRow + rundown.length, endIndex: titleRow + rundown.length,
sheetId: 0, sheetId: worksheetId,
}, },
}, },
}); });
@@ -94,7 +120,7 @@ class sheet {
} }
//update the corespunding row with event data //update the corespunding row with event data
rundown.forEach((entry, index) => rundown.forEach((entry, index) =>
updateRundown.push(this.cellRequenstFromEvent(entry, index, rundownMetadata, titleCol as number)), updateRundown.push(this.cellRequenstFromEvent(entry, index, worksheetId, rundownMetadata, titleCol as number)),
); );
const writeResponds = await sheets({ version: 'v4', auth: sheet.client }).spreadsheets.batchUpdate({ const writeResponds = await sheets({ version: 'v4', auth: sheet.client }).spreadsheets.batchUpdate({
spreadsheetId: sheetId, spreadsheetId: sheetId,
@@ -220,6 +246,7 @@ class sheet {
private cellRequenstFromEvent( private cellRequenstFromEvent(
event: OntimeRundownEntry, event: OntimeRundownEntry,
index: number, index: number,
worksheetId: number,
metadata, metadata,
titleCol: number, titleCol: number,
): sheets_v4.Schema$Request { ): sheets_v4.Schema$Request {
@@ -231,12 +258,10 @@ class sheet {
tmp.forEach(([key, value], index, arr) => { tmp.forEach(([key, value], index, arr) => {
if (index != 0) { if (index != 0) {
if (arr[index - 1][1]['col'] + 1 < value['col']) { if (arr[index - 1][1]['col'] + 1 < value['col']) {
console.log('missing', key, value['col'], arr[index - 1][1]['col']);
arr.splice(index, 0, ['blank', { col: arr[index - 1][1]['col'] + 1 }]); arr.splice(index, 0, ['blank', { col: arr[index - 1][1]['col'] + 1 }]);
} }
} }
}); });
console.log(tmp);
tmp.forEach(([key, value]) => { tmp.forEach(([key, value]) => {
if (isOntimeEvent(event)) { if (isOntimeEvent(event)) {
@@ -266,7 +291,7 @@ class sheet {
return { return {
updateCells: { updateCells: {
start: { start: {
sheetId: 0, //FIXME: sheetId: worksheetId,
rowIndex: index + Object.values(metadata)[0]['row'] + 1, rowIndex: index + Object.values(metadata)[0]['row'] + 1,
columnIndex: titleCol, columnIndex: titleCol,
}, },