Lấy, tạo, cập nhật issues và log thời gian làm việc của Redmine, Jira, Backlog ngay trong Google Sheets - chọn hệ thống trong sidebar, mỗi hệ thống có cấu hình riêng. Tác giả: Nguyễn Thiện Ân (AnNT) (https://www.linkedin.com/in/annguyenit/ - 0378115292 - annguyenthienit@gmail.com) - SmartITSoft.
Lưu ý phân quyền: vào link này để cấp quyền cho gmail chạy được tool kết nối với Google Sheets https://console.cloud.google.com/auth/audience?project=clever-treat-481615-v2
Yêu cầu sử dụng (bản quyền)
- Tài khoản smartitsoft.com (đăng ký tài khoản: https://smartitsoft.com/s/t124)
- Mua sản phẩm T124 – Issues Management Extension trên shop (49.000đ, dùng vĩnh viễn, 2 thiết bị — ví dụ máy nhà + máy công ty): https://smartitsoft.com/products/t124-issues-management-extension
- Trong extension: ⚙ Cài đặt → Tài khoản SmartITSoft → đăng nhập → bản quyền tự kích hoạt cho máy này.
Cần thêm thiết bị hoặc đổi máy: vào smartitsoft.com → Tài khoản → Bản quyền để gỡ thiết bị cũ, hoặc liên hệ shop để nâng số thiết bị.
Tính năng (chung cho cả 3 hệ thống)
| Nhóm | Chức năng | Redmine | Jira | Backlog |
|---|---|---|---|---|
| Import | Get Metadata → sheet 02_Config |
users, statuses, trackers, priorities, versions, custom fields | projects, issue types, statuses, priorities, users, custom fields, versions, components | project, issue types, statuses, priorities, users, custom fields, versions |
| Import | Get All Issues → sheet 03_IssuesManagement |
theo project (+ tracker filter) | theo JQL tự sinh hoặc JQL tuỳ chỉnh | theo project (+ issue type filter) |
| Import | Get Issues by IDs / Keys | 1,2,5-10 |
PROJ-1,PROJ-2 / PROJ-1 đến PROJ-10 |
như Jira |
| Import | Time → sheet 04_TimeManagement |
Spend Time (time entries theo ngày) | Worklogs (theo started date) | Time Summary (Est./Actual Hours theo Due Date) |
| Export | Create / Update All Issues | cột ID trống = tạo mới |
cột Key trống = tạo mới; Status đổi qua transition; Comment gửi thành comment |
cột Issue Key trống = tạo mới; Comment gửi kèm PATCH |
| Export | Create / Update Selected Rows | 2,3,5 hoặc 2-10 |
như Redmine | như Redmine |
| Clear | Clear Issues / Clear Time | giữ header | giữ header | giữ header |
Mỗi hệ thống có cấu hình riêng (URL, key, project, filter, tên sheet). Đổi hệ thống trong panel / popup / options, cấu hình của hệ thống kia vẫn giữ nguyên.
Tuỳ chỉnh sheet (v1.3)
- Chọn cột lấy về: ⚙ Cài đặt → tab hệ thống → "Cột lấy về sheet Issues" — bỏ chọn Description, Notes… hoặc Custom fields để sheet nhẹ. Cột ID/Key và Subject/Summary luôn bật.
- Chiều cao dòng: card Google Sheets → "Chiều cao dòng dữ liệu" (mặc định 25px). Dòng không phình theo nội dung; chữ dài bị cắt khi hiển thị nhưng vẫn còn đủ trong ô.
- Sheet Config trải ngang: mỗi loại (Users, Statuses, Trackers/Issue Types, Priorities, Versions, Custom fields) một cụm cột, dòng 1 tên loại, dòng 2 tên cột, dữ liệu từ dòng 3.
- Dropdown trên Issues: các cột Tracker/Issue Type, Priority, Status, Assigned To/Assignee, Version/Milestone có mũi tên chọn từ Config (gõ giá trị khác vẫn được, chỉ cảnh báo). Tự gắn sau Get All Issues / Get by IDs / Get Metadata.
Nhiều project & báo lỗi (v1.4, Redmine)
- Project Identifier trong Cài đặt nhận nhiều slug:
proj-a, proj-b. Get All / Spend Time gộp cả; sheet Config có cụm PROJECTS (mọi project bạn truy cập được). - Cột Project trên sheet Issues (dropdown) quyết định issue thuộc project nào khi Create/Update: ghi tên hoặc identifier. Cấu hình 1 project thì để trống được; ≥2 project thì bắt buộc.
- Nhập sai → dòng đó không gửi, Activity Log ghi rõ:
Tracker "Bugg" không hợp lệ (có: Task, Bug, …),Due Date phải dạng YYYY-MM-DD,Est. Hours phải là số,Project "X" không có trong danh sách…. Sửa rồi chạy lại "Selected Rows" cho dòng đó.
Dòng lỗi tô đỏ trên sheet (v1.6)
- Sau Update All / Selected Rows, dòng nào đẩy lên không được sẽ tô nền đỏ ngay trên sheet Issues và ô A có ghi chú lý do (rê chuột vào ô A). Dòng chạy được thì trắng lại. Activity Log tóm tắt:
Dòng lỗi: 4, 7 — nhập "4,7" vào ô Cập nhật rows để chạy lại. - Mỗi dòng gửi độc lập: dòng 6 lỗi thì dòng 1–5 đã cập nhật xong, dòng 7–10 vẫn chạy tiếp. Không có "hoàn tác" — sửa dòng đỏ rồi chạy lại đúng các dòng đó.
- Bấm Get All Issues (ghi lại toàn bộ bảng) thì mọi dấu đỏ cũ được xoá.
Phát hiện người khác đã sửa trước khi ghi (v1.7)
- Sheet Issues có thêm cột Sync Stamp = thời điểm issue được sửa lần cuối trên hệ thống lúc bạn lấy về (Get All / Get by IDs). Đừng sửa tay cột này.
- Khi Update, với mỗi dòng có ID tool hỏi hệ thống "issue này sửa lần cuối lúc nào?" — nếu mới hơn Sync Stamp nghĩa là có người khác đã sửa sau khi bạn lấy về → dòng tô CAM, không ghi đè, ô A ghi ai sửa, lúc nào, sửa gì (Status: A → B…). Activity Log liệt kê số dòng.
- Xử lý: Get by IDs cho các dòng đó để lấy bản mới rồi nhập lại; hoặc chắc chắn muốn ghi đè thì tick Ghi đè khi xung đột và chạy lại đúng các dòng đó.
- Mỗi dòng update tốn thêm 2 request (kiểm trước, lấy Sync Stamp mới sau) — bỏ tick Kiểm người khác đã sửa nếu muốn nhanh và chắc không ai sửa song song.
- Màu: đỏ = dữ liệu nhập sai / API lỗi (v1.6) · cam = người khác đã sửa (v1.7).
Ngày tháng (v1.4.1)
- Cột ngày (Start Date, Due Date, Date…) là ô ngày thật định dạng
yyyy-mm-dd, bấm ô có lịch chọn; sort/lọc theo ngày dùng được. - Gõ tay
17/09/2026,2026/9/17,17.09.2026đều được nhận; ngày không hợp lệ (31/02/2026,abc) → dòng báo lỗi. - File Google Sheets đặt locale United States thì
dd/mm/yyyygõ tay bị hiểu là chữ (vẫn đồng bộ được); đổi File › Settings › Locale sang Vietnam hoặc chọn từ lịch.
Cấu trúc cột sheet Issues
Redmine
ID | Project | Tracker | Subject | Priority | Description | Assigned To | Author | Status | Start Date | Due Date | Est. Hours | Done % | Target Version | Parent Issue | Notes | <custom fields…>
Jira
Key | Project | Issue Type | Summary | Priority | Labels | Components | Assignee | Status | Due Date | Est. Hours | Time Spent | Fix Version | Created On | Updated On | Comment | Parent Key | Description | <custom fields…>
Backlog
Issue Key | Project | Issue Type | Summary | Priority | Description | Assignee | Reporter | Status | Start Date | Due Date | Est. Hours | Actual Hours | Created | Updated | Comment | Parent ID | Milestone | <custom fields…>
Cột đầu tiên (ID / Key / Issue Key) để trống = tạo mới khi Create/Update. Cột Notes / Comment chỉ ghi lên server, không đọc về.
Cài đặt
Yêu cầu Chrome 116 trở lên (dùng Side Panel API).
Bước 1: Google Cloud — từ v1.8.0 KHÔNG CẦN
Extension đã điền sẵn Client ID dùng chung của SmartITSoft (ID extension cố định trên mọi máy). Bạn chỉ cần bấm Xác thực Google ở Bước 3. Lần đầu Google hiện màn "Google hasn't verified this app" → bấm Advanced → Go to SmartITSoft Issues Manager (unsafe) → Continue. Đây là cảnh báo chuẩn của Google với app chưa nộp thẩm định, không phải lỗi.
Tuỳ chọn: dùng project Google Cloud riêng của bạn (chỉ khi công ty yêu cầu)
- Google Cloud Console → tạo/chọn project
- APIs & Services → Library → enable Google Sheets API
- APIs & Services → OAuth consent screen (giao diện mới: Google Auth Platform) → đặt tên app, email hỗ trợ, User type External, Save
- Tab Audience → Test users → Add users (email Google bạn sẽ xác thực) hoặc Publish app. Bỏ bước này là gặp
Error 403: access_denied– "has not completed the Google verification process". - APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID (Web application) → Authorized redirect URIs: dán Redirect URI ở trang Cài đặt của extension
- Dán Client ID vào ô Google OAuth Client ID (link Dùng lại Client ID mặc định để quay về bản dùng chung)
Bước 2: Cài extension
Cách 1 — Chrome Web Store (khuyên dùng, tự cập nhật): mở T124 trên Chrome Web Store → Thêm vào Chrome. Đang dùng bản zip mà muốn chuyển sang Store: gỡ bản zip trước (Chrome không cho hai bản cùng ID) → cài từ Store → nhập lại Cài đặt; gỡ extension xoá cài đặt cũ nên máy này có thể bị tính là thiết bị mới — gỡ máy cũ ở smartitsoft.com/licenses nếu báo hết thiết bị.
Cách 2 — Load unpacked từ file zip:
chrome://extensions/→ bật Developer mode → Load unpacked- Chọn folder
T124-Extension-IssuesManagement/02.sources
Bước 3: Cài đặt
Click icon extension → ⚙ Cài đặt 1b. Card Tài khoản SmartITSoft: chọn MỘT trong hai cách
- Đăng nhập tài khoản đã mua T124 (có ô mã 2FA nếu tài khoản bật); hoặc
- Nhập key sản phẩm dạng
T-XXXX-XXXX-XXXX(từ v1.9.0, không cần đăng nhập) — key xem tại smartitsoft.com/licenses (menu 🔑 Bản quyền phần mềm) → bấm Kích hoạt máy này.
Mỗi bản quyền dùng được trên 2 máy. Nếu báo Đã hết số thiết bị (
device_limit_reached): vào smartitsoft.com/licenses → bản quyền T124 → gỡ máy không dùng nữa → quay lại bấm Kiểm lại (nút Gỡ thiết bị cũ trong extension mở đúng trang này). Cập nhật extension từ bản ≤1.7.1 lên 1.8.0+ cũng bị tính là máy mới vì ID extension đổi.
2. Chọn Hệ thống đang dùng (Redmine / Jira / Backlog)
3. Tab của hệ thống đó: điền URL, key/token, project → Test Connection
4. Card Google Sheets: Client ID đã điền sẵn → bấm Xác thực Google (màn cảnh báo unverified: Advanced → Go to … → Continue)
5. Lưu Cài Đặt
Cập nhật bản mới
Cài từ Chrome Web Store thì Chrome tự cập nhật, không phải làm gì. Bản zip: extension tự kiểm (1 lần/ngày) và hiện thanh 🆕 Đã có bản x.y.z trên panel và trang Cài đặt → bấm Tải bản mới (mở trang đơn hàng) → giải nén đè lên thư mục cũ → chrome://extensions bấm ↻. Bỏ qua để không nhắc lại bản đó. Từ 1.8.0 trở đi ID extension không đổi nên cập nhật không mất cài đặt.
Bước 4: Dùng
- Mở một Google Sheet → bấm Alt+Shift+I (Mac: ⌥+Shift+I), hoặc click icon extension → 📋 Mở panel Issues. Panel mở trong khung Side Panel của Chrome (bên phải, không đè lên bảng tính); đóng bằng ✕ hoặc nút ⋮ của Chrome
2. Dropdown Hệ thống ở đầu panel để đổi Redmine / Jira / Backlog
3. Get Metadata trước, rồi Get All Issues / Create-Update…
Lấy API key / token
- Redmine: My Account → API access key. Project Identifier = slug sau
/projects/. - Jira Cloud: https://id.atlassian.com/manage-profile/security/api-tokens → user = email. Jira Server: Personal Access Token, user = username.
- Backlog: Personal Settings → API → Register new API key.
T124 - Issues Management Chrome Extension
Xem bảng giá, ảnh chụp màn hình, chính sách bản quyền và hỗ trợ cài đặt tại SmartITSoft.
Đến trang sản phẩm →