UNPKG

worklog-cli

Version:

A CLI tool for managing worklogs and timesheets

69 lines (56 loc) 1.82 kB
// 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 };