worklog-cli
Version:
A CLI tool for managing worklogs and timesheets
69 lines (56 loc) • 1.82 kB
JavaScript
// utils/sheets.js
const { google } = require('googleapis');
const credentials = require('../credentials.json');
const dayjs = require('dayjs');
const auth = new google.auth.GoogleAuth({
credentials,
scopes: ['https://www.googleapis.com/auth/spreadsheets'],
});
const SHEET_ID = process.env.SHEET_ID;
async function appendWorkLog({ date, task, start, end, project }) {
const client = await auth.getClient();
const sheets = google.sheets({ version: 'v4', auth: client });
await sheets.spreadsheets.values.append({
spreadsheetId: SHEET_ID,
range: 'Sheet1!A:F',
valueInputOption: 'USER_ENTERED',
resource: {
values: [[date, task, start, end, '', project]],
},
});
}
async function getTodayLogs() {
const client = await auth.getClient();
const sheets = google.sheets({ version: 'v4', auth: client });
const today = dayjs().format('YYYY-MM-DD');
const res = await sheets.spreadsheets.values.get({
spreadsheetId: SHEET_ID,
range: 'Sheet1!A:F',
});
const rows = res.data.values || [];
const logs = {};
for (const row of rows) {
const [date, task, , , , project] = row;
if (date === today) {
if (!logs[project]) logs[project] = [];
logs[project].push(task);
}
}
return logs;
}
async function getTodayFirstLogStartTime() {
const client = await auth.getClient();
const sheets = google.sheets({ version: 'v4', auth: client });
const today = dayjs().format('YYYY-MM-DD');
const res = await sheets.spreadsheets.values.get({
spreadsheetId: SHEET_ID,
range: 'Sheet1!A:C',
});
const rows = res.data.values || [];
for (const row of rows) {
const [date, , startTime] = row;
if (date == today) return startTime;
}
return null;
}
module.exports = { appendWorkLog, getTodayLogs, getTodayFirstLogStartTime };