gog sheets links get:在终端中读取 Google Sheets 单元格超链接的完整指南

发布时间:2026/9/17 23:41:06

gog sheets links get:在终端中读取 Google Sheets 单元格超链接的完整指南 gog sheets links get在终端中读取 Google Sheets 单元格超链接的完整指南【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli导读gog sheets links get是 gogcliGoogle Workspace in your terminal提供的电子表格超链接读取命令它能够一次性把指定区域Range内所有单元格中的超链接提取出来并自动换算成绝对 A1 坐标输出。本文以命令参考文档为主体结合 internal/cmd/sheets_links.go 源码与测试用例完整讲解该命令的用法、参数、输出格式以及底层实现原理帮助你用它做超链接审计、爬取链接清单、与脚本和 Agent 工作流对接。命令概览gog sheets links get是gog sheets links命令组的读取子命令对应的完整调用形式为gog sheets (sheet) links (hyperlinks) get (list,show) spreadsheetId range其中(sheet)、(hyperlinks)、(list,show)均为可省略的别名或中间路径。实际最常用的等价写法是gog sheets links get spreadsheetId range从源码可以看出get是links命令组的默认子命令default:withargs并带有list、show两个别名// internal/cmd/sheets_links.go type SheetsLinksCmd struct { Get SheetsLinksGetCmd cmd: default:withargs aliases:list,show help:Get cell hyperlinks from a range Set SheetsLinksSetCmd cmd: name:set aliases:write help:Set cell hyperlinks (rich-text links) }这意味着历史写法gog sheets links id range省略get依然有效向后兼容。命令的父级为 gog sheets links其中还包含写入方向的姊妹命令gog sheets links set。位置参数详解get子命令仅接收两个必填位置参数见 internal/cmd/sheets_links.gospreadsheetId— 电子表格 ID可以是裸 ID也可以是 Google Sheets 的分享链接。gogcli 内部会通过normalizeGoogleID实现位于 internal/cmd/googleid.go自动从 URL 中提取真实文件 IDdocs.google.com/spreadsheets/d/id/edit这类路径式 URL 会被提取出/d/之后的 ID 段drive.google.com的?id查询参数、/file/d/id/view、/drive/folders/id等路径同样支持即使粘贴时遗漏了https://前缀如docs.google.com/spreadsheets/d/...解析器也会补全协议后识别若输入不是可识别的 Google URL则原样返回去除首尾空白后的字符串因此裸 ID 直接可用。例如下面几种输入等价gog sheets links get 1AbC...xYz Sheet1!A1:B10 gog sheets links get https://docs.google.com/spreadsheets/d/1AbC...xYz/edit#gid0 Sheet1!A1:B10range— 读取区域A1 表示法范围遵循 Google Sheets 的标准 A1 表示法例如Sheet1!A1:B10。命令内部会对该参数做一次cleanRange处理见 internal/cmd/sheets.go把转义形式\!还原为!方便在 Shell 中直接传递而无需担心转义。全局 Flags 说明gog sheets links get继承 gogcli 全局 Flags与父命令 gog sheets links 保持一致FlagTypeDefaultHelp--access-tokenstringUse provided access token directly (bypasses stored refresh tokens; token expires in ~1h)-a--account--acctstringAccount email, alias, or auto for authenticated Google API commands--clientstringOAuth client name (selects stored credentials token bucket)--colorstringautoColor output: auto|always|never--disable-commandsstringComma-separated list of disabled commands; dot paths allowed-n--dry-run--dryrun--noop--previewboolDo not make changes; print intended actions and exit successfully--enable-commandsstringComma-separated list of enabled command prefixes; dot paths allowed (restricts CLI)--enable-commands-exactstringComma-separated list of exact enabled commands; dot paths allowed and parent commands do not enable children-y--force--assume-yes--yesboolSkip confirmations for destructive commands--gmail-no-sendboolfalseBlock Gmail send operations (agent safety)-h--helpkong.helpFlagShow context-sensitive help.--homestringOverride gogcli config/data/state/cache root (equivalent to GOG_HOME)-j--json--machineboolfalseOutput JSON to stdout (best for scripting)--no-input--non-interactive--noninteractiveboolNever prompt; fail instead (useful for CI)-p--plain--tsvboolfalseOutput stable, parseable text to stdout (TSV; no colors)--quota-projectstringGoogle Cloud project to bill for API usage (sent as X-Goog-User-Project; some APIs require it with --access-token or ADC)--readonlyboolfalseBlock mutating API requests at runtime; auth add also requests read-only OAuth scopes--results-onlyboolIn JSON mode, emit only the primary result (drops envelope fields like nextPageToken)--select--pick--projectstringIn JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands.-v--verboseboolEnable verbose logging--versionkong.VersionFlagPrint version and exit--wrap-untrustedboolfalseIn JSON/raw output, wrap fetched text fields in external untrusted-content markers其中与读取类命令最相关的几个 Flag-a / --account指定认证账户邮箱、别名或auto多账户环境下必须显式选择-j / --json以 JSON 输出到 stdout是脚本化和 Agent 集成的最佳选择-p / --plain / --tsv输出稳定的 TSV 文本无颜色适合管道处理--readonly运行时拦截一切写请求配合gog auth add的只读 OAuth scope 使用适合只读审计场景--no-input在 CI 中永不交互式提示而是直接失败退出--results-onlyJSON 模式下只输出主结果丢弃nextPageToken等信封字段。输出格式表格模式默认未指定输出 Flag 时命中结果以表格形式打印表头为A1、VALUE、LINK列定义见 internal/cmd/sheets_presentation.goA1 VALUE LINK Sheet1!A1 docs https://docs.google.com/document/d/xyz Sheet1!B3 release https://github.com/example/releasesA1超链接所在单元格的绝对 A1 坐标含工作表名VALUE单元格的formattedValue显示文本LINK提取出的超链接 URL。若查询区域内没有任何超链接命令不会报错而是打印一行No links found并以成功状态退出见 internal/cmd/sheets_links.go。JSON 模式添加-j / --json后输出被包装为如下结构{ spreadsheetId: 1AbC...xYz, range: Sheet1!A1:B10, links: [ { sheet: Sheet1, a1: Sheet1!A1, row: 1, col: 1, value: docs, link: https://docs.google.com/document/d/xyz } ] }links数组中的每个元素与源码中的sheetsCellLink结构体一一对应见 internal/cmd/sheets_presentation.go字段语义sheet工作表标题a1绝对 A1 坐标row/col基于 1 的行、列号value单元格显示文本link超链接 URL。源码实现剖析命令如何拿到链接gog sheets links get的执行流程internal/cmd/sheets_links.go可以分为四步1. 参数校验与规范化spreadsheetID : normalizeGoogleID(strings.TrimSpace(c.SpreadsheetID)) rangeSpec : cleanRange(c.Range) if spreadsheetID { return usage(empty spreadsheetId) } if strings.TrimSpace(rangeSpec) { return usage(empty range) }缺少任一参数都会返回 usage 错误退出码 2。这一行为有测试用例佐证在 internal/cmd/sheets_validation_more_test.go 中SheetsLinksGetCmd{}缺 ID与SheetsLinksGetCmd{SpreadsheetID: s1}缺 range都会被断言为返回错误。2. 获取 Sheets 服务通过requireSheetsService见 internal/cmd/service_helpers.go完成账户选择与 OAuth 认证返回*sheets.Service。3. 调用 Sheets API 的Spreadsheets.Get这是整个命令的数据来源关键点在于精确的Fields选择器只拉取与超链接相关的字段避免下载整个网格数据resp, err : svc.Spreadsheets.Get(spreadsheetID). Ranges(rangeSpec). IncludeGridData(true). Fields(sheets(properties(title),data(startRow,startColumn,rowData(values(hyperlink,formattedValue,userEnteredFormat(textFormat(link(uri))),textFormatRuns(format(link(uri)))))))). Do()IncludeGridData(true)要求返回网格数据默认元数据请求不返回单元格内容Ranges(rangeSpec)只请求指定区域Fields(...)只取工作表标题、起始行列偏移、单元格的hyperlink、formattedValue、userEnteredFormat.textFormat.link.uri以及textFormatRuns中的富文本链接。4. 提取、去重并换算 A1 坐标extractCellLinksinternal/cmd/sheets_links.go从单个单元格中最多收集三种来源的链接并做去重整格链接cell.Hyperlink例如以HYPERLINK()公式或超链接粘贴产生的整格链接格式级链接cell.UserEnteredFormat.TextFormat.Link.Uri整格文本格式中携带的链接富文本分段链接遍历cell.TextFormatRuns收集每个 run 中Format.Link.Uri同一单元格中文字片段各自带链接的场景。三种来源均会先TrimSpace空串被跳过重复 URL 只保留一次。随后根据 API 返回的startRow/startColumn0 基偏移与行内索引换算为绝对坐标absRow : startRow ri 1 absCol : startCol ci 1再通过 internal/sheetsa1/format.go 中的FormatCell生成标准 A1 字符串——列号转字母A、B、…、Z、AA…工作表名按需加引号含特殊字符或纯数字时会以...!形式转义单引号翻倍保证输出坐标可直接回填给其他 sheets 命令使用。实战示例列出指定区域内的全部超链接gog sheets links get 1AbC...xYz Sheet1!A1:B10使用show别名、以 JSON 输出便于脚本解析gog sheets links show 1AbC...xYz Sheet1!A1:B10 --json配合jq提取 URL 列表gog sheets links get 1AbC...xYz Sheet1!A1:B10 --json \ | jq -r .links[] | [.a1, .value, .link] | tsv只读审计模式不携带写权限、不触发任何写操作gog sheets links get 1AbC...xYz Sheet1!A1:B10 --readonly --plain在 CI 中无交互执行并检查是否有外链if gog sheets links get 1AbC...xYz Sheet1!A1:B10 --json --no-input \ | jq -e .links | length 0 /dev/null; then echo 发现超链接请人工复核 else echo 该区域无超链接 fi与写入方向的联动gog sheets links setgog sheets links get是超链接读写闭环的读端写端由 gog sheets links set别名write承担两者共享同一个SheetsLinksCmd命令组。set 命令支持整格链接、多段富文本--runs-json、批量--cells-json支持文件与-标准输入以及 dry-run 预览其行为在 internal/cmd/sheets_links_set_test.go 中有完整覆盖。典型的读取—修改—回写工作流即为用get导出全部链接 → 脚本清洗/去重 → 用set批量写回。更多资源父命令gog sheets links完整命令索引Command index源码实现internal/cmd/sheets_links.goA1 坐标生成internal/sheetsa1/format.go参数校验测试internal/cmd/sheets_validation_more_test.go表格列定义与输出结构internal/cmd/sheets_presentation.go【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/17 23:41:06

VS Code 中 JS/TS 语言服务反复崩溃?Volar 插件的排查与修复指南

下午正写着一个 Vue 3 组件,VS Code 右下角突然弹出一条红色错误:**“JS/TS 语言服务已立即崩溃 5 次。不会重新启动该服务。这可能是由以下其中一个扩展提供的插件引起的: Vue.volar。”**那一瞬间,语法高亮还在,但自动补全、跳转…

2026/9/17 23:41:06

Spring Context深度解析:从Bean生命周期到三级缓存与依赖注入

1. Spring Context到底是个什么东西每次看到讲Spring的教程,很多同学第一反应都是“又是Bean生命周期那一套,背完就忘”。但今天这篇我想换一个角度,从Spring Context本身入手,把这个框架最核心的容器概念讲透。Spring Context&am…

2026/9/17 23:41:06

Android Studio 无法运行项目?run配置丢失根源与修复步骤

从 GitHub 上拉下一个项目,或者拿起自己三个月前写的工程,双击项目文件夹,Android Studio 加载了老半天,右下角进度条终于消失,你点右上角的 Run 按钮,却发现它是灰的;打开Run > Edit Config…

2026/9/18 0:46:11

数据库两表比对:NOT EXISTS、JOIN、EXCEPT与NULL陷阱

两表数据比对这件事,写起来简单,真上手才知道坑不少。前阵子帮朋友收拾一个数据库课程设计的收尾工作,两张结构完全一样的订单表——一张是源库导出的快照,一张是同步工具写进来的目标表,跑完对完总行数严丝合缝&#…

2026/9/18 0:46:11

古文学生僻字绝版合集.doc方框乱码:OLE2解析与Unicode建库

简介:《古文学生僻字绝版合集》是一份面向古文爱好者、中文系学生、语文教师及传统文化研习者的生僻字速查文档,针对阅读《楚辞》等先秦两汉文献时字音不明、字义难解、语境隔膜的问题,按字条整理注音、释义与用例,便于随身查阅和…

2026/9/18 0:46:11

MySQL concat()函数详解:字符串拼接的用法、NULL处理与性能优化

1. concat()函数是什么,为什么大家都在用做MySQL开发的人,几乎每天都会碰到这种需求:把几个字段拼成一个字段输出。比如用户表里last_name和first_name分开存,前端要显示完整姓名;订单表里省份、城市、详细地址分开存&…

2026/9/18 0:41:11

Go应用安全实践:从SQL注入到并发竞态的漏洞防护指南

上周给一个 Go 写的内部管理后台做安全评审,二十多个接口里翻出七个有 SQL 拼接,其中一个还带着fmt.Sprintf拼LIMIT后的数字。另一个用 Go 写的消息推送服务更惨,因为用了exec.Command("sh", "-c", ...)拼外部命令&#…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/18 0:01:09

Google Colab 实战:运行模型、数据加载与报错排查

1. 为什么我劝你先搞懂 Colab 的运行模型1.1 Colab 到底是什么,跟本地跑代码差在哪Google Colab 简单说就是一台跑在浏览器里的 Linux 虚拟机,你打开一个 Notebook,背后就连上了一台带 GPU 的远程机器。你在单元格里敲的每一行 Python&#x…

2026/9/18 0:01:09

C语言数据类型与表达式详解

1. C语言数据与数据类型概述在C语言编程中,数据是程序处理的核心对象。理解数据的分类和特性是掌握C语言的基础。C语言中的数据主要分为四大类:常量、变量、表达式和函数。这些数据类型构成了C语言程序的基本元素,每种类型都有其独特的特性和…

2026/9/18 0:01:09

SQL时间字段指定时间段查询:区间语义、索引与时区避坑

上周排查一个线上问题&#xff0c;用户反馈"昨天的订单一条都没查到"&#xff0c;但数据库里明明躺着两千多条。最后定位下来&#xff0c;不是数据丢了&#xff0c;也不是接口挂了&#xff0c;而是那个查询条件把时间段写成了> 2024-05-20 00:00:00 AND < 2024…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码