# 协同表格

[table.nju.edu.cn](https://table.nju.edu.cn)

# 指引

2020年底在2011计划的支持下，人工微结构科学与技术协同创新中心建设协同表格服务全校！

协同表格网址：[https://table.nju.edu.cn](https://table.nju.edu.cn/)

- 使用[南京大学统一身份认证](http://authserver.nju.edu.cn/authserver/login)的用户名密码登录（登录oa.nju.edu.cn或ecard.nju.edu.cn使用的），首次使用需要登录网页端激活账号
- 修改邮箱、修改密码、忘记密码请在[南京大学统一身份认证](http://authserver.nju.edu.cn/authserver/login)平台操作，账号信息由信息化建设管理服务中心提供
- 毕业时协同表格帐号会因为学校统一身份认证过期而导致停用，敬请提前处理协同表格内的数据

### 容量

- 教职工（含离退休）、博士后、人事代理、博士生、硕士生、本科生：100GB

### 联系我

姚舸

地址：江苏省南京市鼓楼区金银街15号唐仲英楼

电话：025-83621186

邮箱：[yaoge@nju.edu.cn](mailto:yaoge@nju.edu.cn)

|QQ群：2343870|公众号：微结构eScience|
|:--:|:--:|
|![boxqqqun.png](https://doc.nju.edu.cn/uploads/images/gallery/2021-05/scaled-1680-/boxqqqun.png)|![wechat.jpg](https://doc.nju.edu.cn/uploads/images/gallery/2021-05/scaled-1680-/wechat.jpg)|

## 客户端

协同表格暂无客户端；由于是本地部署，也**未接入官方 SeaTable 小程序**。但协同表格支持安装为 PWA 应用，你只需要在浏览器（FireFox、Chrome、Chromium Edge 等主流浏览器，**包括移动端**）打开`table.nju.edu.cn`的时候，点击地址栏右侧<img class="pic_inline" src="https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624092999736.png">的图样或者使用“添加为应用”“添加到主屏幕”即可（部分手机需要有创建桌面图标权限）。

![安装为应用](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624093068552.png)

# 新手入门

欢迎您使用`table.nju.edu.cn`服务~

协同表格是在南京大学本地部署的 SeaTable 企业版（下文若提及“协同表格”，则特指南京大学本地部署版本，即`table.nju.edu.cn`），由人工微结构科学与技术协同创新中心·eScience中心提供服务。

协同表格是一个强大的工具，但要用好需要花一些时间学习。本文会为您总结您可以从何处学习协同表格的使用，以及获取配套的相关资源。

## 极简贴士：三个初学者必须要知道的操作

除了左键点点点，以下是初学者经常忽视的基本操作。如果您是第一次使用协同表格，**请一定要看一遍并自己尝试**。

### 注意鼠标悬浮

在协同表格内有大量的按钮需要通过鼠标悬浮才会出现，

例如在工作区：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243106399.gif)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243106399.gif)

在表格内：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243282364.gif)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243282364.gif)

还有很多功能，通过鼠标悬浮可以大概了解它是做什么的：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694243550069.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243550069.png)

### 注意图标含义

注意“...”、“▼”、“▶”之类图标的含义，往往是有更多或者下一级选项的，丰富的功能往往都在这里

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694243348337.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243348337.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694243444358.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243444358.png)

### 注意右键

在不同地方点击右键可能会有不同的结果。

一般来说，下面这种右键是浏览器自身的右键菜单，没有什么特殊功能：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694243770265.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243770265.png)

但是在表格内是有右键功能的：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694243855564.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694243855564.png)

## 图文教程

图文教程内容简单、常用，SeaTable 官方有一份较为通俗的文档：[SeaTable 使用手册](https://docs.seatable.cn/published/seatable-user-manual/home.md)。

[![SeaTable 使用手册](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676269206163.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676269206163.png)

除去 SeaTable 官方的教程，eScience 中心也提供了一份用于线下培训的教程课件：
[初窥办公自动化：协同表格基础（2022.10）.pdf](https://doc.nju.edu.cn/attachments/2)

[![课件目录](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676269278236.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676269278236.png)

此外，eScience中心的微信公众号（微结构eScience：NJU-HPC）也会发一些使用案例或者小贴士：[#协同表格](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyMjQ0MjMzOQ==&action=getalbum&album_id=1699551289480642561#wechat_redirect)

[![#协同表格](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676269321146.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676269321146.png)

## 视频教程

SeaTable 官方提供了一些视频教程：[SeaTable 视频教程](https://market.seatable.cn/videos/)，与图文教程配合会更加有助于理解。

[![视频教程](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676269343454.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676269343454.png)

## 模板资源

协同表格和 SeaTable 官方均提供了一些模板，可以直接使用也可模仿学习：
+ [协同表格模板（校内）](https://table.nju.edu.cn/templates/)：主要是校内使用场景，可以一键使用
[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676269377042.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676269377042.png)
+ [SeaTable 官方模板](https://market.seatable.cn/)：包含各种行业的模板，需要导出再导入校内协同表格
[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676269395504.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676269395504.png)

其中，SeaTable 官方模板需要您如下操作：

先点击查看感兴趣的模板：

[![点击“查看”按钮](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676268277639.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676268277639.png)

之后在右上角使用“导出”功能：

[![使用“导出”功能](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676268376399.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676268376399.png)

导出完毕后，您会获得一个`*.dtable`格式的文件：

[![获得dtable文件](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676268499478.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676268499478.png)

回到`table.nju.edu.cn`上，您可以直接创建表格时导入`*.dtable`文件：

[![导入dtable](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676268561025.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676268561025.png)

稍等片刻即可成功导入模板。

> 注意：由于是从非`table.nju.edu.cn`导入的模板，模板信息创建者并不在协同表格的用户内，因此出现下列“乱码”找不到该用户是正常的，忽略即可。<br>[![不在南京大学的用户无法识别的乱码l](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676268656817.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/image-1676268656817.png)

## 代码资源

本校可能用到的一些资源，例如常用脚本代码、单选多选标签JSON文件，托管在eScience中心代码仓库内：[eScience - NJU Table Support](https://git.nju.edu.cn/escience/nju-table-support)。本仓库也欢迎校内师生参与提交代码贡献！

## 应用举例

+ 在本网站上，有一些南京大学校内的[模板用例与使用说明](https://doc.nju.edu.cn/books/18d80/chapter/38b3e)和[【教程合集】eScience 公众号协同表格教程合集](https://doc.nju.edu.cn/books/18d80/page/escience)
+ 在 SeaTable 官方网站上，也有各行各业的用法案例：[方案和案例文库](https://docs.seatable.cn/published/seatable-customer-story/)

## 二次开发

如何获取单个表格（Base）的 API Token：

<video src="https://doc.nju.edu.cn/attachments/3" controls="controls" width=800></video>)

关于账户的全局 API Token，您需要通过[SeaTable Web API简介](https://docs.seatable.cn/published/seatable-api/home.md)中提到的方式来认证获取，网页界面没有该项设置。

除了使用基本功能，协同表格/SeaTable 的可编程特性使其有着丰富的扩展使用场景，例如[基于LabVIEW与SeaTable实现的简易实验室监测方案](https://mp.weixin.qq.com/s/Ij8cRwwqK-pW1ybR6OrjBA)。

对于有编程基础和强烈兴趣的用户，您可以在相关API上二次开发。若您对基于 SeaTable 的编程开发感兴趣，您可以参考官方开发资料：
+ [SeaTable Web API 简介（中文）](https://docs.seatable.cn/published/seatable-api/home.md)
+ [SeaTable Web API 参考文档（英文）](https://api.seatable.io/reference)
+ [SeaTable 开发者文档（英文）](https://developer.seatable.io/)
+ [SeaTable 编程手册（Python/JavaScript/SQL/插件开发）（中文）](https://seatable.github.io/seatable-scripts-cn/)

或者加入下方相关群聊直接提问~

## 群聊交流

您可以加入 eScience 的QQ群，与其他用户一起讨论交流使用技巧等话题：

![QQ群：2343870](https://doc.nju.edu.cn/uploads/images/gallery/2023-02/scaled-1680-/image-1676267545586.jpg)

# 认识协同表格：基础使用篇

# 用惯了Excel，试试协同表格

提到电子表格，大家第一反应一般都会是经典的 Excel。望着随处可见的`.xls`、`.xlsx`文件，如果让你来做一张本学期的成绩表格，你或许是这样设计的：

打开 Excel，新建一个空白表，第一行敲上“表头”（给每列取一个标题），然后第二行开始逐条填写编辑。

[![一个典型的 Excel 表格](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624194380623.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624194380623.png)

没错，一个典型的表格最基本的要素就出现了——**表头（列标题）、行**。列的字母和行的数字一同确定了一个“单元格”的位置。

但我们想要组织更多的表格，比如说，上学期的成绩表格呢？

你可以分为两个文件，做出`本学期成绩.xlsx`和`上学期成绩.xlsx`两个**工作簿**（Workbook）；也可以在当前的表格下面另起一行写新的表格，就像在一张纸上自由书写。但熟悉 Excel 的朋友一定会第一个想到，我建一张新的**工作表**（Sheet）不就可以了吗？

是的，你可以新建一个工作表，存放在同一个工作簿中：

[![新建工作表](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624194686910.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624194686910.png)

现在，你拥有了一个名为`成绩.xlsx`的工作簿，里面有“本学期成绩”和“上学期成绩”两张工作表。当你想要跟别人描述你的成绩时，你就可以说：“在名为`成绩.xlsx`的工作簿的‘本学期成绩’的工作表的C列2行是我的微积分成绩”。这便是熟悉的 Excel 的结构了。

而在协同表格中，最基本的概念也是[如此类似](https://seatable.github.io/seatable-scripts-cn/)：

> 在 SeaTable 中，一个表格英文叫做一个 base。一个 base 包括多个子表，一个子表英文叫做一个 table。一个 table 中包含多个行和列。一个行包含多个字段。

在协同表格里，没有了本地的“文件”，但你的"工作区"（Workspace）内有一个个表格项目，它们被称为“Base”（好的翻译会降低理解的难度，官方未提供中文解释，这里我们不妨叫他“表库”）：

[![工作区内的“Base”](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624195767796.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624195767796.png)

当你打开一个“表库”，又可以在左上角的“+”号添加“表”，它们被称为“子表”（“Table”）。

[![一个“Base”中的“Table”](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624195928693.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624195928693.png)

但不一样的是，这里有一个叫“视图”（View）的设置，它可以将你的表格过滤、排序、分组、隐藏等结果保留为一个视图而**不影响表内的原始数据**；

[![每个“Table”可以切换多个“View”](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624196160685.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624196160685.png)

还有一个不一样的地方是，Excel 的单元格可以设置格式如日期、货币、时间等：

[![Excel 的格式设置](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624196504693.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624196504693.png)

但在协同表格内，**只可以每一列指定规定的列类型，其对应着不同的设置与功能**：

[![协同表格支持的列类型](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624196721832.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624196721832.png)

> 不恰当地说：若 Excel 是一个二维数组，数组元素可以是任何类型；那么协同表格里，这就是一个一维结构体数组。

这样的结构看似比 Excel 受限，却规范了数据的格式，从而为后续的许多功能留下了巨大的想象空间。事实上，拿 Excel 来与之对比是不太合适的，协同表格真正类似的 MS Office 产品，应当是 Microsoft Access。

[![你可能高中考完计算机就没碰过它的 Access](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650869750494.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650869750494.png)

总结一下几个名称：

|英文|中文|解释|
|-|-|-|
|Workspace|工作区|登录`table.nju.edu.cn`，映入眼帘的“我的表格”和你所在的群组|
|Base|表库<br>（非官方翻译）|在“工作区”中的一个**总“表格”**|
|Table|子表|在“表库”中并列的多个**子表格**|
|View|视图|一个子表在特定过滤、排序、分组、隐藏、高亮等设置下的展现结果，展示一个子表部分或全部的数据|

下面，让我们进一步深入协同表格 SeaTable 的世界。

# 协同表格界面简介

从电脑登录`table.nju.edu.cn`后，你会看见协同表格的工作区：

[![协同表格工作区](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624969320207.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624969320207.png)

其他复杂的功能暂且不介绍。点击 **“添加表格或文件夹”**，“新建空白表”，并点击进入新创建的表格，你可以看见打开了全新的表格是这样的界面：

[![空白表](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624969217626.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624969217626.png)

这一张表内，可以点击的地方非常多，但你只需要着重知道四点：

+ “+”号，意味着可以新建、创建
+ “…”或“▼”号，意味着展开还有更多设置
+ 鼠标移动悬停时，可能有一些隐藏的入口
+ 基本只有单元格可以右键弹出菜单（见下文关于行操作的内容）

如果你想快速了解协同表格，在第一次使用协同表格的时候，不要着急，强烈建议随处点点这些地方。

# 协同表格的基本使用

## 鼠标，慢一点

在协同表格中，很多地方是平时隐藏起来，鼠标“路过”才显示的。比如说：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650956269574.gif)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650956269574.gif)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650956376548.gif)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650956376548.gif)

忽略这些地方，可能会给你带来很多困扰。

## 行与列

### 新增、插入、删除行列

在使用方式上，我们也可以让 Excel 用户在使用协同表格时更加熟悉。

传统的 Excel 中，新建一张空白工作簿里面会将所有的行、列给你预先创建，用户写到哪，表格就用到哪一行哪一列，多余的一般都被忽略：

[![新建 Excel 表格](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624966898078.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624966898078.png)

而在协同表格中，你打开一个新的表格，可能会看见仅有几行空白行，且只有一列：

[![新建协同表格](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624967937456.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624967937456.png)

如果你需要增加行或列，你需要在行列处点击对应的“+”号来创建。

协同表格的每一行可能看起来都是“空白的”，但事实上它**每一行的行为（比如被谁创建、何时创建，最后一次被谁修改、何时修改）都会被保留在这行内作为隐藏的信息**，只在特殊的列类型内会显示。

如果你习惯了在 Excel 内敲回车（`Enter`）键来换行，你可以在右上角的**设置-快捷键设置**内

[![设置-快捷键设置](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968266969.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968266969.png)

将回车键的行为修改为 **“在末尾插入行”**。

[![修改回车键的行为](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968325353.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968325353.png)

同样常用的插入、删除行的功能，都藏在右键菜单里，需要你右键单击单元格：

[![右键单元格，常用行操作](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968528811.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968528811.png)

那么列操作在哪里？和 Excel 不同的是，协同表格的列操作藏在每一列标题的“▼”弹出菜单内。

[![列标题右侧“▼”的弹出菜单](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968630601.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624968630601.png)

### 列的类型

有的朋友可能知道，在 Excel 中表格比较特殊的是写了标题的第一行。在协同表格中，第一行直接开始增添数据，而**标题行就直接对应于每一列的标题**，不需要额外索引（他们自己就是“列索引”）。

> 如果你使用过 Python 里的 pandas 库，应该明白这里直接把标题行作为列索引的便捷之处，它们非常类似。

### 特殊列：第一列

协同表格中比较特殊的是**第一列**。官方说明“第一列是用于标识行的特殊列，不能隐藏或移动。表格很长时，可以将其冻结”，因此第一列一般是一些用于标记这一行的信息。

第一列可选的列类型与其他列不一样，仅限“文本”、“数字”、“日期”、“自动序号”四类设定。

[![第一列可选列类型](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624969100173.png)](https://doc.nju.edu.cn/uploads/images/gallery/2021-06/scaled-1680-/image-1624969100173.png)

# 常见问题与解答

💡💡💡💡💡💡💡💡💡

查阅提示：在手机移动端阅读本文档，请在顶部点击 **“信息”** 查看目录导航。

💡💡💡💡💡💡💡💡💡

## 协同表格相关信息

### 服务起源

2020年底，在2011计划的支持下，[人工微结构科学与技术协同创新中心](https://cicam.nju.edu.cn)开始建设协同表格。

### 如何登录

协同表格网址是`table.nju.edu.cn`，使用南京大学统一身份认证的用户名密码登录（登录`oa.nju.edu.cn`或`ecard.nju.edu.cn`使用的，也可登录[南京大学统一身份认证平台](https://authserver.nju.edu.cn)进行设置）。

### 注意事项

+ 修改邮箱、修改密码、忘记密码请在[南京大学统一身份认证平台](https://authserver.nju.edu.cn)操作，账号信息由[信息化建设管理服务中心](https://itsc.nju.edu.cn)提供。
+ 毕业时协同表格帐号会因为学校统一身份认证过期而导致停用，敬请提前处理协同表格内的数据。

### 数据存储

协同表格所有的数据都是**校内存储**，具体地址在江苏省南京市鼓楼区金银街15号南京大学唐仲英楼内的机房。

![中心位置](https://doc.nju.edu.cn/uploads/images/gallery/2021-05/scaled-1680-/image-1621409078260.png)

## 登录与账户相关

### 毕业后账号怎么办

协同表格接入学校提供的统一身份认证服务，因此协同表格所有的登录**取决于学校如何管理统一身份认证**。

因此，一般经验来说，毕业后学校并不会立即使毕业生的统一身份认证失效，因此可能在毕业后还有一段时间内（时长不确定），协同表格是能登录的。

我们建议大家使用协同表格时遵循下面几条建议，以避免不必要的资料损失：
+ 日常使用协同表格时，将重要的数据云端和本地都多处备份。
+ 协作情境下（特别是实验室等群组），优先考虑让南大稳定在校的教职工（如导师等）来创建表格和群组。
+ 可以通过群组的“转让”功能，将群组传递给仍在校的帐号。
+ **由于学校会在毕业后关闭毕业生的账号权限，所以用户在毕业前（建议是毕业前一个月）需要自行下载处理数据**。
  
特别注意，对于本校继续读研或者硕转博的同学（主要是学工号发生了改变），至少在一年内（超过这个时间可能会被清理）是可以通过[表格迁移](https://doc.nju.edu.cn/books/18d80/page/432ac)将旧账号改成新账号。

### 协同表格账号或密码错误

协同表格采用业界标准的 [LDAP](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) 和 [OAuth2](https://en.wikipedia.org/wiki/OAuth) 接入了学校的统一身份认证服务，因此使用时账号和密码均与南京大学统一身份认证一致。若您出现问题，建议按照下述步骤顺序尝试：

1. 如果您不确定自己的密码是否正确，可以直接点击打开[南京大学统一身份认证](https://authserver.nju.edu.cn)**尝试登录**以确认账户密码正确。
2. 如果您**在南京大学统一认证服务的页面无法登录或忘记您的密码**，请根据页面提示找回，或者前往[信息化建设管理服务中心的主页](https://itsc.nju.edu.cn)翻到页面底部联系信息化建设管理服务中心。
3. 如果您**在南京大学统一认证服务的页面成功登录**，确认账号密码无误却仍然无法登录协同表格，请通过登录页面的联系方式加入QQ群（QQ群：`2343870`）反馈或发送邮件至`yaoge@nju.edu.cn`联系 e-Science 中心姚老师，确认是否是统一身份认证存在问题。

#### 通过OA提交申请修复
如为统一身份认证存在问题，根据学校信息化建设管理服务中心要求需要通过 OA 系统提交申请修复账号问题。因OA只有教职工可以登录，学生需要烦请教师帮忙提交申请。
1. 登录 [oa.nju.edu.cn](https://oa.nju.edu.cn/)，在左侧点击 **“校内申请”** ，再点击 **“校内申请拟稿”**
2. 标题填写（其中`xxxxxxx`替换为学工号）：
``` 
申请修复 xxxxxxx 统一身份认证问题。
```
3. 主办部门选择 **“科研院所”** 下的 **“南京微结构国家实验室”**
4. 事由填写：
```
账号 xxxxxx 在统一身份认证LDAP中的信息存在问题，还请协助修复。
``` 
5. 提交后提醒所在单位的OA秘书，将该申请转 **“南京微结构国家实验室”** 的 **姚舸** 处理
6. 管理员会判断问题所在，然后转办学校信息化建设管理服务中心修复，您可以在OA系统中跟踪流程。

### 协同表格通知邮箱修改

由于协同表格默认从统一身份认证获取邮箱，而统一身份认证邮箱默认设置为学校邮箱，或者有时候为`xxx@nju.edu.cn`的“假邮箱”，可能导致无法使用协同表格的通知功能。

解决办法是：
1. 访问[南京大学统一身份认证服务](https://authserver.nju.edu.cn)`https://authserver.nju.edu.cn`，修改邮箱。
3. 退出协同表格，在协同表格首页上输入用户名密码重新登录（不要使用单点登录/一键登录）。

# 表格模板使用教程

一些表格模板的使用教程都在这里啦

# 核酸报告统计汇总表（含OCR截图识别）

由于学校疫情防控需要，为便利核酸报告收集工作，人工微结构科学与技术协同创新中心eScience中心与计算机科学与技术系的团队合作，依托中心的计算资源制作了**含截图识别**的表格模板系统。

表格包含功能有：

+ 表单收集苏康码内核酸截图，自动识别并关联人员信息
+ 计算指定时间段内核酸完成情况，包括完成率以及未完成名单

使用本模板，需要进行一些基本配置才能发挥完整功能。

## 一、使用模板

进入`table.nju.edu.cn`，访问**模板**。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650634608538.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650634608538.png)

在**模板**内找到 **“健康-核酸报告统计汇总表（含OCR截图识别）”** 后开始使用。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650634763322.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650634763322.png)

## 二、表格配置

由于模板的限制，暂时自动化任务无法通过模板复制，而**自动化任务是整个模板的核心**。因此，**这一部分非常重要**。

### 第一步：导入人员名单

在表格使用前，需要预先准备一个以下格式的名单：

|学工号|姓名|
|-|-|
|100001|张三|
|……|……|

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640800784.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640800784.png)

在**人员信息汇总表**中，选择**从xlsx或csv中导入新数据**，然后选中符合格式的文件：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640554022.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640554022.png)

**注意！Excel表格需要把单元格格式全部改为文本类型，否则部分纯数字学工号会出现异常！**确认无误后导入。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650713983313.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650713983313.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640689294.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640689294.png)

导入后，应当是只有**学工号**和**姓名**列有信息，而且**没有多余空行**。

### 第二步：设置自动化任务

在表格右上角，更多 **“...”-自动化规则**，点击 **“增加规则”**

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640943945.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640943945.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640980912.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650640980912.png)

之后会进入具体自动化规则的设置页面。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641137940.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641137940.png)

这里需要同样的方法新建两个规则，具体设置见下：

#### ① 自动触发OCR识别

此自动化是为了当有人提交截图时，自动开始OCR识别。设置如下：

|项目|设置|
|-|-|
|规则名称|（随意）|
|表格|原始数据|
|视图|默认视图|
|触发条件|新增记录|
|操作|运行Python脚本|
|脚本|请求OCR识别核酸报告|

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641661111.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641661111.png)

#### ② 自动链接人员信息

此设置是为了有新的识别结果时，自动链接人员信息。设置如下：

|项目|设置|
|-|-|
|规则名称|（随意）|
|表格|已识别核酸记录|
|视图|默认视图|
|触发条件|新增记录|
|操作|添加链接|
|选择此表中的链接列|链接人员信息|
|列1|学工号|
|列2|学工号|

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650705217480.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650705217480.png)

### 第三步：发放表单（问卷）

点击右上方表单：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641811820.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641811820.png)

鼠标移至已有的表单处，**点击分享按钮**，将此链接分享给他人即可填写（为了获取身份，表单默认会要求登录）。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641862824.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641862824.png)

填写者的界面，学号姓名也会自动识别，**仅需上传一个截图**：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650703510242.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650703510242.png)

特别需要注意，**如果发放对象为学生等在Table服务范围的用户**，姓名学号是可以自动识别的，但是需要编辑表单打开**仅登录用户**：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650711442264.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650711442264.png)


## 三、子表设计功能介绍

模板中分为四个子表，每张表格都设计有具体功能。四张子表分别为：
+ **原始数据**：所有表单填写提交的数据均会提交到此处
+ **已识别核酸记录**：被图像识别处理后的数据（学工号、姓名、核酸检测时间）会自动生成在此处
+ **时间段分析汇总表**：根据选择时间段自动计算核酸报告完成情况（完成率、未完成名单）
+ **人员信息汇总表**：存放全部人员的信息（学工号、姓名）

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650635568518.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650635568518.png)

通过适当的自动化逻辑设计，我们可以让表格完成如下的流程：

1. 收集对象（如学生）填写表单，只需要提交一张苏康码内的核酸检测截图；截图提交后，会出现在 **“原始数据”** 子表
2. **“原始数据”** 子表检测到新增信息，**自动触发**OCR识别脚本，脚本识别是否和提交人一致，并识别出截图中含有的核酸检测信息，汇总在 **“已识别核酸记录”** 子表
3. **“已识别核酸记录”** 子表识别到新增信息，与 **“人员信息汇总表”** 中的人员信息匹配并建立双向链接；同时 **“人员信息汇总表”** 中会显示**最近一次核酸检测**的时间
4. 通过 **“时间段分析汇总表”** ，手动选择开始日期和结束日期，点击按钮便可自动计算该段时间内的核酸检测完成率，以及生成一个未完成人员的名单

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650639553746.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650639553746.png)

### 原始数据

#### 自动模式

原始数据表单一般不需要任何操作，自动化设置完毕后会自动处理，并且提供结果。

#### 手动模式

但是如果出现无法识别或识别失败的情况，**原始数据**内包含一个**重新识别**按钮，直接点击会调用脚本自动识别。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650703401670.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650703401670.png)

切换到**无法识别**视图，会将没有识别或识别失败的内容单独显示。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650704611113.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650704611113.png)


### 已识别核酸记录

#### 自动模式

这张表一般不需要操作，在**原始数据**内识别的结果，会自动添加到这里，并与**人员信息汇总表**的人员信息关联。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650704899323.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650704899323.png)

#### 手动模式

但是如果出现前面**原始数据**无法识别，需要手动在这一张表添加链接，并填写**姓名**、**链接学生信息**：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650705384720.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650705384720.png)

然后在运行**工具栏-“...”-数据处理-匹配人员数据处理**，即可自动匹配手动新加的人员记录。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650705625354.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650705625354.png)

之后将人工介入处理的条目，直接将状态修改为**已人工处理**以标记处理完成。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650704424510.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650704424510.png)

### 时间段分析汇总表

这个页面仅支持手动模式，通过设置日期范围，点击计算完成情况会在后面自动生成结果。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650705922203.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650705922203.png)


### 人员信息汇总表

此表无需额外操作，仅仅用于查看相关人员最近一次的核酸时间。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650706021303.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650706021303.png)


## 鸣谢

校党委研工部

计算机科学与技术系研究生工作办公室

**技术支持**

IMAGINE Lab实验室、计算机软件研究所、自然语言处理研究组

**OCR模块开发**

硕士研究生王甲豪、张天昀和吕云哲（计算机科学与技术系研究生会）

**模板设计**

硕士研究生王甲豪、张天昀和吕云哲（计算机科学与技术系研究生会）

人工微结构科学与技术协同创新中心

**计算资源**

人工微结构科学与技术协同创新中心

---

如遇使用问题，欢迎加入**QQ群：2343870**。

相关推文👉[NJU计小妍：抗疫｜核酸检测自动核查系统出炉~](https://mp.weixin.qq.com/s/pBJIxu1TQyKYL-OZINusiQ)

NJU计小妍：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650706940140.jpg)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650706940140.jpg)

微结构eScience：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650707253321.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650707253321.png)

# 公共卫生教职工入校名单（OCR识别）

由于学校疫情防控需要，为便利教职工入校名单收集工作，人工微结构科学与技术协同创新中心eScience中心与计算机科学与技术系的团队合作，依托中心的计算资源制作了**含截图识别**的表格模板系统。

表格包含功能有：

+ 表单收集入校教职工信息和行程卡截图
+ 自动识别行程卡截图时间、手机号码、途径城市、是否带有星号

使用本模板，需要进行一些基本配置才能发挥完整功能。

## 使用模板

进入`table.nju.edu.cn`，访问**模板**。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650634608538.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650634608538.png)

在**模板**内找到 **“健康-公共卫生教职工入校名单（OCR识别）”** ，点击打开并使用模板。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/snipaste-2022-04-24-11-07-09.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/snipaste-2022-04-24-11-07-09.png)


## 表格配置

### 发放表单

针对教职工发放传统表单（问卷）可以收集行程码。点击右上方表单：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641811820.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650641811820.png)

鼠标移至已有的表单处，**点击编辑按钮**。
[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/snipaste-2022-04-24-11-12-53.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/snipaste-2022-04-24-11-12-53.png)

点击点开 **所在单位名称** 修改默认值为单位名称。
[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/snipaste-2022-04-24-11-16-40.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/snipaste-2022-04-24-11-16-40.png)

注：若教职工包含自管人员，访问权限请**不要开启**“仅登录用户”，应设置为 **“任何人”**。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650781991144.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650781991144.png)

### 发放查询外部应用

在表格右上方的**插件-外部应用**内，添加外部应用，选择**数据查询**，名称可以设定为入校查询。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/snipaste-2022-04-25-09-05-18.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/snipaste-2022-04-25-09-05-18.png)

设置查询字段为**入校教职工工号**，因为是公开查询链接，为了隐私保护**隐藏全部**字段，然后再打开必要的且可公开的字段，如准许入校状态、工号和姓名，设置完成后将此查询共享外链分发：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/snipaste-2022-04-25-09-20-23.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/snipaste-2022-04-25-09-20-23.png)

填写者点开的查询界面如下：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/snipaste-2022-04-25-09-34-03.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/snipaste-2022-04-25-09-34-03.png)

输入工号即可查询允许入校的情况。

## 人员名单子表

通过导入本单位所有人员的信息，可以进行已提交记录的自动匹配，从而确认每人是否已提交以及手机号码是否匹配

### 导入名单
在子表“人员名单”中导入或者粘贴本单位所有人员的工号、姓名和手机号
[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/snipaste-2022-04-26-21-01-53.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/snipaste-2022-04-26-21-01-53.png)

### 分组显示
用匹配性列进行分组展示，可以非常便利的查看各种情况

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/ftPsnipaste-2022-04-26-21-08-34.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/ftPsnipaste-2022-04-26-21-08-34.png)

## 入校申请子表

入校申请子表中分为三个视图，每个视图都是为特定目的设计。分别为：
+ **默认视图**：所有表单填写提交的数据均会提交到此处，被图像识别处理后的数据（时间、手机号、途经城市等）会自动生成在此处
+ **异常行程**：行程卡识别不成功、带星号、非当日截图，会在此处显示
+ **准许入校名单**：在默认视图中点击允许入校后的名单在这里，可以导出Excel后直接在信息收集系统中导入

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650791996534.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650791996534.png)

### 默认视图

提交的记录会在云端自动识别，如果出现识别不成功的情况，可以通过**重新识别**按钮来再次尝试识别。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650785760278.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650785760278.png)

在识别成功后，根据识别结果，手动点击**允许入校**按钮，会给此提交添加 **“允许”** 的标记；反之，可以双击空白将“准许入校状态”改为**不允许**，

### 异常行程

异常行程会单独将行程码识别结果有异常的条目单独列出，以供处理。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650791569421.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650791569421.png)

### 准许入校名单

所有被标记 **“允许”** 的条目均会在此简化显示，

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650791830710.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650791830710.png)

你只需要使用 **“导出视图为Excel”**，便可以导出符合格式的Excel文件直接导入信息收集系统中上报！

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650791868132.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650791868132.png)

### 一键批准

首先从申请中找出不符合的，将其“准许入校状态”标记为“拒绝”。然后再打开表格左侧的 **脚本**，运行**批准所有申请**，所有准许入校状态，则所有未标记准许入校状态的行都会自动标记为允许

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-2022-04-27-08-42-55.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-2022-04-27-08-42-55.png)

## 归档

可将今天之前的过往申请归档，这样可以用一个表格每天收集信息，而不用创建新的表格。

### 归档过往申请

切换到“过往申请视图”，该视图列出的都是今天之前的提交的申请，选择归档视图，将该视图的所有记录（即今天之前的申请）归档
[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-2022-04-28-17-52-46.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-2022-04-28-17-52-46.png)

### 查看归档

切换到“归档申请”视图，可以查看已经归档的历史申请

## 鸣谢

校党委研工部

计算机科学与技术系研究生工作办公室

**技术支持**

IMAGINE Lab实验室、计算机软件研究所、自然语言处理研究组

**OCR模块开发**

硕士研究生王甲豪、张天昀和吕云哲（计算机科学与技术系研究生会）

**模板设计**

硕士研究生王甲豪、张天昀和吕云哲（计算机科学与技术系研究生会）

人工微结构科学与技术协同创新中心

**计算资源**

人工微结构科学与技术协同创新中心

---

如遇使用问题，欢迎加入**QQ群：2343870**。

相关推文👉[NJU计小妍：抗疫｜核酸检测自动核查系统出炉~](https://mp.weixin.qq.com/s/pBJIxu1TQyKYL-OZINusiQ)

NJU计小妍：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650706940140.jpg)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650706940140.jpg)

微结构eScience：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650707253321.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650707253321.png)

# 行程卡、核酸报告截图OCR识别表

本表在基础的收集功能上，又新增了OCR识别的功能，支持同时识别：

+ 核酸检测报告

+ 行程卡

本表仅完成最基础的识别功能，其他功能因为需求变动频繁、过于复杂，需要用户具备一定的表格使用基础，请用户自行添加；如个性化需求需要帮助的，请联系eScience以提供支持。

如果你还没有熟悉这类表格的使用，建议你先尝试详细学习如下两个模板：

1. [核酸报告统计汇总表（含OCR截图识别）](https://doc.nju.edu.cn/books/18d80/page/ocr)

2. [公共卫生教职工入校名单（OCR识别）](https://doc.nju.edu.cn/books/18d80/page/ocr-jE8)

由于当前模板的限制，用户需要手动设置自动化：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650808191792.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650808191792.png)

若要通过下载全部导出固定文件名格式的图片，可以这样操作：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650808203591.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650808203591.png)

同时，本表格建议搭配**看板**插件使用，

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650856180908.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650856180908.png)

该插件可以将原始数据

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650859939741.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650859939741.png)

设置按照**情况总览**列来分组，勾选你需要查看的字段

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860159497.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860159497.png)

数据会按照更加易读的卡片形式来展现

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860110439.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860110439.png)

放置到工具栏，下次使用更方便哦！

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860281167.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860281167.png)


## 鸣谢

校党委研工部

计算机科学与技术系研究生工作办公室

**技术支持**

IMAGINE Lab实验室、计算机软件研究所、自然语言处理研究组

**OCR模块开发**

硕士研究生王甲豪、张天昀和吕云哲（计算机科学与技术系研究生会）

**模板设计**

硕士研究生王甲豪、张天昀和吕云哲（计算机科学与技术系研究生会）

人工微结构科学与技术协同创新中心

**计算资源**

人工微结构科学与技术协同创新中心

---

如遇使用问题，欢迎加入**QQ群：2343870**。

相关推文👉[NJU计小妍：抗疫｜核酸检测自动核查系统出炉~](https://mp.weixin.qq.com/s/pBJIxu1TQyKYL-OZINusiQ)

NJU计小妍：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650706940140.jpg)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650706940140.jpg)

微结构eScience：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650707253321.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650707253321.png)

# 南京大学材料、易耗品验收入库单表格

本表格为《南京大学材料、易耗品验收入库单》格式一致的表单，集**发票信息收集**、情况管理、**自动化生成入库单Excel文件**于一体，降低发票收集入库整理的繁冗程度。


## 使用方法

### 使用模板

我们制作了一份模板，请在**模板-财务**中寻找~

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860629517.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860629517.png)

### 新建收集表

按照 **“示例收集”** 子表的格式（推荐**复制表**但**不复制记录**）创建新的子表（例如：X年X月XXX办公室发票收集表）并自己取名。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860718187.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860718187.png)


[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860723899.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860723899.png)


### 发票数据收集与表单发放

针对财务管理人员，可以通过制作表单来让发票垫付人员帮忙填写。在右上角 **“表单”** 中已有一份为“示例收集”子表创建的《材料、易耗品发票收集表单（示例）》示例表单：


[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860734824.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860734824.png)
 

你可以创建新的表单并设置为为自己的子表（如前文的X年X月XXX办公室发票收集表），共享给别人填写发票信息：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650860923265.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650860923265.png)


[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650861196317.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650861196317.png)
 

同理，也可以分享数据收集表（适合大批量录入）。但无论如何，**对应子表要选择上面你创建的新表**。


### 配置表生成入库单打印文件

在本表格的所有子表中， **“配置表”** 只允许添加新的生成配置（即一行），**不能删除这个子表、删改列名**！


[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650861184019.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650861184019.png)
 

在 **“配置表”** 中，第一个 **对应收集表格** 输入需要数据来源的表格名，其余按照实际填写即可，最后点击 **“生成Excel入库单”按钮**。

### 打印入库单

格式已经被脚本自动设置，所以下载生成的Excel文件后，

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650861150983.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650861150983.png)

只需要修改 **“打印整个工作簿”**，然后直接打印即可：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1650861161475.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1650861161475.png)

示例表格打印效果预览：[示例收集.pdf](https://doc.nju.edu.cn/attachments/1)

# 模板中的自动化脚本更新教程

有时候，因为脚本存在隐性问题（俗称**BUG**）或需求发生改变，模板中的自动化脚本的代码也会发生改变。本教程将简单介绍如何更新自动化脚本。

## 方法一：直接用最新的模板

|优点|缺点|
|-|-|
|最佳使用方法|数据必须从头收集|

这个方法简单直接，不必多说。

## 方法二：从最新模板复制粘贴新代码

|优点|缺点|
|-|-|
|保留当前收集数据，无需重新设置自动化|需要复制粘贴操作来修改代码，不熟练用户需要小心|

有时候表格用到一半、数据都已经收集好了，却突然发现了 BUG，怎么办？

首先，还是先从最新的模板创建一个新表格，然后直接点击该表格的对应脚本，

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1651229511227.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1651229511227.png)

在弹出的代码页面直接**全选-复制**。然后回到你当前正在使用的表格，**全选-删除-粘贴**即可。

## 方法三：导出-导入-重新设置

|优点|缺点|
|-|-|
|保留当前收集数据，但必须要重新设置自动化|整体导入代码，避免误修改代码风险|

同样，从最新模板创建一个新表格，然后将新的脚本导出，浏览器会自动下载（可能会要求你点击**保留**）：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1651229839788.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1651229839788.png)

进入你正在使用的表格，导入刚才下载的脚本：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1651230352648.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1651230352648.png)

记住，此时需要将**按钮列-列类型转换-选择脚本**换成你刚刚导入的那个脚本（顺序和脚本栏一致，一般是最后一个；当然你可以手动重命名脚本来标记一下）。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1651231674544.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1651231674544.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1651231900264.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1651231900264.png)

同样，**自动化设置涉及此脚本的内容**需要一并修改。在那之后，删除原先的脚本。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/scaled-1680-/image-1651231959433.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-04/image-1651231959433.png)

## 方法四：成为自动化脚本真正的主人

|优点|缺点|
|-|-|
|你将主宰本表格的一切|需要耐心学习|

只要你会脚本对应的语言（Python/JavaScript），这些都不是问题~

# 高性能集群作业信息记录表模板教程

有时候我们在唐楼HPC上计算任务，想要较为准确地知道当前计算进展（例如，刚刚提交或者计算结束，又或者多个计算阶段到哪了），但是面临一堆Output文件不停`cat`、`grep`、`bpeek`很不优雅……

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694246004814.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694246004814.png)

为了比较准确知道自己的作业当前的状态，有很多种方法，集群用户大多是这三种做法：

1. 方法一<span style="color:red;">（千万别这么干系列）</span>：自己写个**无限循环**的脚本不停查询然后维持校园网外网访问，检测到后通过SMTP给自己发邮件。作为eScience高性能计算交流群的年更节目，此方法几乎没有任何优点，**不仅浪费一个校园网终端、邮件有概率被过滤、浪费大量登录节点资源导致其他用户也卡顿**，还有可能**得到集群管理员姚老师的特！别！关！照！**
2. 方法二：使用`bwait`命令（详细用法自行搜索）在任务后执行通知，优点是够简单，缺点是登录节点如果出了什么问题，该命令也会失效。
3. 方法三：直接将通知脚本集成在任务脚本里，放在任务前后执行。

本文将重点介绍方法三。你可能会说，那方法三不还是需要SMTP发邮件吗？

非也，如果你知道以下三个事实：
+ 协同表格（table.nju.edu.cn）和计算节点直接连通，而且同属内网**无需登录校园网账号**
+ 协同表格支持Webhook/邮件消息通知，其中Webhook包括**企业微信机器人**和**钉钉机器人**，甚至自定义Webhook
+ 大多数手机系统都已经支持企业微信和钉钉的系统级推送（指**无需后台驻留应用也能收到通知**）

那么你就可以自然想到：通过协同表格的API从HPC计算任务提交信息至表格，然后利用表格自动化实现消息推送提醒；既能统一记录信息，方便后期统计分析计算效率，又可以实时通知，妙啊~

那么，如何实现这一构想呢？

## 创建表格文件

### 获取模板

在协同表格的模板页，点击**科研-HPC作业信息记录表**，使用此模板：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694247345505.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694247345505.png)

这个模板预设的列名可以不用修改，因为后面的脚本预设的就是这些列名：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694247533953.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694247533953.png)

### 创建自动化

首先，打开钉钉或企业微信（本文以企业微信为例），在群聊内创建一个**群机器人**

[![创建群机器人](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694247689624.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694247689624.png)

之后，复制Webhook地址

[![复制Webhook地址](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694247775339.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694247775339.png)

回到之前创建的表格，我们打开**第三方集成**

[![“第三方集成”在“...”点击后的菜单中](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694247847793.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694247847793.png)

可以看见，表格支持发送邮件/企业微信机器人/钉钉机器人。本文我们主要关注机器人，因此邮件就暂时略过了。

[![第三方集成界面](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694247958844.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694247958844.png)

在此处，我们添加一个企业微信机器人并粘贴刚才的Webhook地址

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694250353881.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694250353881.png)

测试可以发送消息，即设置完毕。

> 如果你需要更高级的Webhook触发其他外部工作流来实现更加强大的自动化，可以选择另一种方式
> 
> [![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694248261491.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694248261491.png)
>
> 此自定义Webhook会被所有新增、复制、删除、修改行操作触发，并以特定的格式发送消息。详情见[官方手册](https://seatable.io/en/docs/webhooks/struktur-der-webhook-daten/)。

打开表格的**自动化规则**，新增一条规则：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694250482956.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694250482956.png)

在规则中，我们设置只要新增记录的任务状态列“不是空”，

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694250535239.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694250535239.png)

然后增加一个动作，动作类型为**发送企业微信**，并选择刚才我们在“第三方集成”创建的那个企业微信机器人

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694250611949.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694250611949.png)

如果你想要“花里胡哨”一些，可以选择Markdown格式，并且按照[企业微信机器人官方文档](https://developer.work.weixin.qq.com/document/path/91770#markdown%E7%B1%BB%E5%9E%8B)的Markdown格式要求配合{列名}引用的模板语法来撰写。钉钉机器人同理。

下面是一个企业微信机器人的例子：
```md
集群任务新动向：
>任务ID：<font color="warning">**{任务ID}**</font>
>队列信息：**{队列}**
>节点信息：**{节点}**
>任务状态：<font color="info">**{任务状态}**</font>
```
保存这个自动化规则。至此，自动规则设置完毕。

## 获取脚本

在eScience的[Seatable-Reporter代码仓库](https://git.nju.edu.cn/escience/seatable-reporter)中，找到`seatable-reporter-LSF.py`文件，这就是脚本了。你可以把这个脚本放置在你的home目录下或其他什么地方，本文示例放置在`~`下面。

这个脚本配合上边的模板，什么也不用修改，可以直接拿来用。

## 使用脚本

### 获取Base API Token
脚本读取两个重要的环境变量：`SEATABLE_HOST`与`SEATABLE_BASE_TOKEN`，其中前者对协同表格用户而言填写`table.nju.edu.cn`即可，后者需要自行填写之前创建表格的API Token。

API Token的获取方式：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694252581217.gif)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694252581217.gif)

获取后，通过`export`命令将上述内容写入环境变量：

```sh
# 偷懒的话，可以直接加到`.bashrc`里面去
export SEATABLE_HOST=table.nju.edu.cn
export SEATABLE_BASE_TOKEN=<刚刚获取的API Token>
```
### 提交计算任务

由于提交作业之前的`alias`无法继承至LSF作业环境里，为了简单起见可以在LSF作业脚本开头写入命令，例如叫`mylog`。

在你想要的地方，直接`mylog`你想要的信息即可，消息便被发送至协同表格。以下是一个示例LSF作业脚本，
```sh
#BSUB -q 7702ib
#BSUB -n 1

alias mylog="python ~/seatable-reporter-LSF.py"

mylog "提交任务"
<your job>
mylog "计算结束"

```

表格上便会获得此消息

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694252970362.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694252970362.png)

当然，根据计算任务不同，你也可以自定义更多的状态信息。表格接收到新的记录提交，便会触发自动化，在手机上相应提醒：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694253134803.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694253134803.png)

此外，表格本身留下的记录也可以用于一些信息统计——

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/scaled-1680-/image-1694253277571.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-09/image-1694253277571.png)

## 结语

本文主要实践通过协同表格与HPC的联动，在纯内网环境实现了低成本的计算任务实况通知。

事实上，类似的自动化案例在eScience的各种服务中比比皆是。得益于eScience多个服务的灵活性，看似不相关的服务平时各司其职；一旦互相协同，就能在小至办公智能化，大至工作自动化的各方面有很大便利。

# 通用预约系统表模板使用教程

很多时候，为了更好地分配资源，我们需要有这样一个系统应用：

+ 能够让大家提前提交预约，并且具体到实名
+ 能够让大家**方便地查看/查询当前预约状况**，以便自行安排预约
+ 能够对预约**做出一些限制**
+ 能够根据不同单位、不同会议室/设备**分类计费**

这样的需求，**单纯的问卷形式传统表单收集是做不到的**。而数据收集表虽然可以创建，**整体的填写体验却不佳**，也做不到判断填写是否有效。

如何将多种数据**查看**手段、数据**收集**手段，有机地结合起来，并赋以**自动化**？协同表格的通用应用、脚本、自动化规则综合使用，便是一种极好的方式。

> 本模板现在已经率先应用在唐仲英楼的会议室预约系统中。最古早的传统表单/数据收集表用法见2021年的推送：[《协同表格 | 校内免费问卷制作平台你还不知道？》](https://mp.weixin.qq.com/s/q6xBlXzW5qhftfI7b0cwWw)，这种用法作为早期智能表格的补充模块，比较简陋。现在面向复杂需求，更推荐使用的是通用应用：[《协同表格 | 让每个人只能看见自己的记录，通用外部应用一招秒杀！》](https://mp.weixin.qq.com/s/wEiBRBMQqvY3-ymAqAhR-g)。

太长不看？这次，我们做了个简单的演示视频，建议在电脑上播放噢！

<video src="https://box.nju.edu.cn/f/0e1f2df92d7a47be8911/?dl=1"  controls="controls" width=800 ></video>

## 使用模板

### 从模板创建

登录[协同表格](https://table.nju.edu.cn)，从“通用”-“通用预约系统表”创建一张新表。

[![从模板创建](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701350070063.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701350070063.png)

[![通用-通用预约系统表](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701350125987.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701350125987.png)

打开创建的“通用预约系统表”，下面准备开始修改内容。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701350328378.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701350328378.png)

### 修改表格信息

#### 预约记录表-单选列标签

在创建的表格中，**“预约记录表”子表**内可以看到如下的这些列：

+ 申请序号（文本列，自动生成）
+ 申请人（创建者列，发放应用后填写人提交后自动生成）
+ **院系（单选列，管理员需根据情况设置）**
+ 其他院系部处（文本列，发放应用后如果填写人院系选择“其他”，则会提交）
+ 负责人姓名（文本列，发放应用后填写人提交）
+ 负责人工号（文本列，发放应用后填写人提交）
+ 手机（文本列，发放应用后填写人提交）
+ 邮箱（邮箱列，发放应用后填写人提交）
+ **会议室房间（单选列，管理员需根据情况设置）**
+ 会议室使用开始时间（日期列，发放应用后填写人提交）
+ 会议室使用时长（时长列，发放应用后填写人提交）
+ 会议室试用结束时间（公式列，类型为日期，由前两项自动计算）
+ 会议室使用用途（文本列，发放应用后填写人提交）
+ 备注（文本列，发放应用后填写人提交）
+ 费用（数字列，脚本自动计算）
+ 创建时间（创建时间列，发放应用后填写人提交后自动生成）
+ 状态（单选列，脚本自动计算）
+ 无效原因（文本列，脚本自动计算）
+ 申请人姓名学工号（文本列，发放应用后填写人提交后自动生成）
+ 申请人姓名（公式列，类型为文本，由前一项自动提取，提取技巧见：[协同表格 | 今日小技巧：从表单问卷的信息中提取填写者姓名学号](https://mp.weixin.qq.com/s/jex687myJJo-bg5e4UPxGw)）
+ 申请人学工号（文本列，发放应用后填写人提交后自动生成）

在上述诸多信息中，你 **只需要更改标出的两列**，点击“编辑单选”：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701351015580.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701351015580.png)

其中，您可以根据您的实际需求，将院系更改为部门、年级、课题组等等其他人员分类；会议室房间**也可以是仪器设备等其他公共资源**。

> 如果您需要更改列名，请注意将下方脚本内的相关索引（代码中“院系”和“会议室房间”的关键词）一并更改！
> 
> [![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701351421557.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701351421557.png)

#### 预约计价表-多选列标签

在前边我们修改过的“院系”和“会议室房间”（当然，根据你的需求，这里可能已经不叫这个名字了，但下面我们仍然沿用这两个名字），在 **“预约计价表”子表** 内也把相应的列名修改一致，并且标签需要一致：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701352066149.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701352066149.png)

唯一不同的是，这里的“院系”和“会议室房间”**必须是多选列**。

> 这里有个小技巧：你可以通过“导入/导出标签”从前面的“预约记录表”子表精准地把标签导入过来。
>
> [![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701352124484.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701352124484.png)

“预约计价表”子表提供了两种计费模式：**次单价和时单价**，并且逻辑上取**最大值**：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701352392851.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701352392851.png)

该子表的每一行都是计价规则，其逻辑为：同一行内，对应的“院系”预约对应的“会议室房间”，按照后边的计算方式计算。

> 此逻辑更改需要动脚本代码。如果不需要某种计费方式，一个简单的方法是：直接将该值写为`0`。例如，不需要按次计费，那就把次单价改为`0`，这样就始终采用时单价的结果了。

需要注意，**这张子表应该覆盖所有的情况，并且规则互相不得有冲突**。

#### 预约规则配置表-变量值

**“预约规则配置表”子表**配置了用于脚本的变量。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701352791702.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701352791702.png)

首列不要动，你只需要根据自己需求修改“值”即可。

需要特别注意的是，`OUTDUE`是宽限期，该参数设定在后期录入开始时间早于当前一定时间段的记录，也会被视作有效预约。

### 邮件通知（可选）

为了能较为即时反馈预约结果，本模板设计了邮件通知系统，但需要按照下文方式配置。首先打开**第三方集成**面板：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701353395771.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701353395771.png)

在 **“邮件”-“增加邮件账号”** 内，添加一个用于发信的邮箱：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701353472231.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701353472231.png)

添加邮箱需要下列信息：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701353599454.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701353599454.png)

这些信息你可以通过搜索**对应邮箱的第三方客户端配置**教程来填入。例如，以南京大学邮箱为例，你可以参考[《南大电子邮件使用办法》](https://itsc.nju.edu.cn/1b/ce/c21586a334798/page.htm)中关于“学生/教师邮箱客户端设置办法”的内容，寻找“SMTP”和“IMAP”端口号与客户端专用密码设置。

在上述账号添加完毕后，你可以**点击“发送”**来测试是否正确配置：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701354033587.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701354033587.png)

接着，打开 **“规则”-“自动化规则”** 模块：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701354108969.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701354108969.png)

其中已经有预置的三个核心自动化规则，你**只需要检查第一个“预约状态更新通知”自动化规则**：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701354249657.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701354249657.png)

绝大多数设置都是无需修改的，只需要**将“第三方账户”从下拉框选中你刚刚添加的账户即可**：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701354226716.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701354226716.png)

如果不设置这一部分，邮件将不会发送，但前面的功能不受影响。

### 脚本

本预约系统的核心脚本有两个，除非有前文中提到的需要修改列名的情况，一般情况下无需修改。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701353301313.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701353301313.png)

> 可以注意到，这里的脚本有两个。其中，除了**新增记录规则判断**，我们还需要**定期冲突重复检查**。这是因为，记录提交后，后台会运行一个Python脚本，但由于这个过程是并发的，如果极小概率出现：A和B是两条有预约时间冲突/重叠的记录，A记录比B记录先触发脚本，但因为某些不可控的原因，A的脚本尚未执行完时B已经被执行了，B脚本是完全不知道A记录的存在的，因此可能会同时被判断为**预约成功**。为了解决这个问题，一般做法是通过队列或其他方式有一个顺序的控制，这在协同表格中可以单独以一张子表作为队列来解决——但是显然这非常麻烦。因此，每天定时做一次检查，将冲突情况搁置并让申请人通知管理员处理，是非常必要的。
> <div drawio-diagram="433"><img src="https://doc.nju.edu.cn/uploads/images/drawio/2023-12/drawing-4-1701484145.png"></div>

脚本会获取之前的记录，查询检测是否合法，然后计算费用，写入**预约记录表**的**状态**和**无效原因**列。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701482850648.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701482850648.png)

其中，**状态**有4个：

+ 预约成功：预约完全符合条件
+ 预约失败：出现冲突或者其他违反预约规则的时间段
+ 等待审核：提交后的默认状态
+ 正在调解：出现极小概率冲突时，定期检查会将**预约成功**切换至此，该检查默认每次预约提交后第二天0点进行，因此如果第二天没有变化，那么一定是**预约成功**了

预约失败的原因一般包括：

+ [合法性检查错误] 超出最大预约时长 MAX_DURATION，请仔细阅读说明。
+ [合法性检查错误] 未达到最短预约时长 MIN_DURATION，请仔细阅读说明。
+ [合法性检查错误] 不能预约已经超过回溯期 OUTDUE 的时间。
+ [合法性检查错误] 超出允许的最大提前预约时间 MAX_PERIOD，请仔细阅读说明。
+ [合法性检查错误] 该时段已有预约，请预约前通过查询功能检查该时段是否可约。

如果自动化运行未生效（没有自动判断预约成功），可以通过脚本日志查看是不是哪里设置有问题（尤其是前文提到的预约计价表情况是否定义完全）：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701482738956.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701482738956.png)

脚本日志的常见报错包括：

+ [规则错误] 冲突的规则：预约计价表里面有多次定义的费用规则
+ [规则错误] 缺少规则：预约计较表里面缺少费用定义

## 编辑应用

通用应用是一个基于智能表格可让用户自行搭建简易APP的功能。通过简单的页面类型选择、组织，用户就可以为原先“简陋”的表格“套”上一层友好的交互页面。应用内的人员管理也是与表格原先的“协作人”独立，每一个用户登录应用时，都会被注册为一个应用的角色。

因此，通用应用功能相比之前依靠共享表格、视图以及传统表单、数据收集表实现的各种数据收集协作场景，都更加安全且功能丰富，而且**登入/注册应用的用户不会受到人数限制**。在面向大批量、不确定身份的人员很多行政目的的表格协作中，直接共享表格不仅权限不安全也有可能受到人数限制，使用通用应用是个推荐选择。

在“应用”模块，已经有一个样例应用。我们将通过下面这个应用来展示通用应用的优势。

点击右侧的小笔<img src=https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701354452848.png class="pic_inline">编辑此应用：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701354395940.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701354395940.png)

从左侧导航栏可以看见，这个应用设计了这些页面：

+ 说明
+ 所有预约日历
+ 所有预约查询
+ 预约申请
+ 申请人
  + 预约取消（申请人）
  + 有效预约（申请人）
  + 无效预约（申请人）
+ 负责人
  + 预约取消（负责人）
  + 有效预约（负责人）
  + 无效预约（负责人）
+ 预约管理

可以看到，我们预期本应用的设计需要满足预约填写，但又**远不止是填写**。我们希望：

+ 有一个**对填写者友好的导航**，能够补充一些必要信息：需要注意到，手机上打开应用时，左侧导航栏一般会默认隐藏，设计一个**说明**页是必要的。
+ **填写人有充分的手段查看当前预约情况，而且方式灵活**：按照日历看（时间维度）时间更方便，增设**预约日历**；或者有目的地检索某个房间（地点维度）预约情况，增设**所有预约查询**。
+ 有一个**统一的填写入口**：制作**预约申请**表单页。
+ **申请人与负责人均有权限取消预约和查看预约情况**：在前面的表格中，我们收集了两个人员信息，一个是填写者，也就是申请人的学号/工号，另一个是负责人的工号；通过[预过滤技巧](https://mp.weixin.qq.com/s/wEiBRBMQqvY3-ymAqAhR-g)，我们很容易实现页面**分别按照申请人和负责人**过滤。
+ **为应用设置管理员，以多人合作**：设计**预约管理**页，仅限特定人员可见。


### 说明页

进入编辑界面，说明页可以根据你的具体情况修改。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/scaled-1680-/image-1701354496163.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-11/image-1701354496163.png)

### 所有预约日历/所有预约查询

这两个页面直观展示当前预约情况：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701415067307.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701415067307.png)

其中，检索功能更具体一些：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701415078915.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701415078915.png)

这两个页面无需修改。

### 预约申请

这一页是用于预约填写的表单：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701415280811.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701415280811.png)

这里也应用了一个技巧，设置**申请人姓名学号**和**申请人学工号**两个的默认值分别为`{creator.name}`和`{creator.id}`，并**设置默认值之后不能更改**，就可以直接获取当前登录者的信息，**填写人不需要手动填自己的姓名学号**。该技巧见：[协同表格 | 今日小技巧：从表单问卷的信息中提取填写者姓名学号](https://mp.weixin.qq.com/s/jex687myJJo-bg5e4UPxGw)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701415468476.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701415468476.png)

预约申请页面一般也无需修改。

### 申请人/负责人

申请人/负责人文件夹内的页面结构是一样的

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701415181545.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701415181545.png)

其中，对应的人员在**预约取消**一栏可以删除已经存在的记录，但是不能修改或新增。如要重新预约，必须要从上面的**预约申请**提交新的预约。

### 预约管理

预约管理是可以设置为我们指定的人来访问，其他人无权限访问这一页面。这样，我们就可以在应用内就完成数据协作，无需共享表格。

鼠标移动到“设置”小齿轮，

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416247243.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416247243.png)

就可以打开这一页的页面设置：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416306891.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416306891.png)

可以发现，各种权限能够设置的选项有四个：管理员（这张智能表格的管理员）、没有人、任何人、**特定角色**。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416344886.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416344886.png)

这里的**特定角色**与智能表格中的**指定用户**是完全不同的两个概念。**特定角色**仅在本应用内存在。在编辑本应用时，左侧可以看见**用户和角色管理**一项：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416476672.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416476672.png)

在**用户**一栏中的用户，便是本应用目前为止注册的用户：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416533459.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416533459.png)

> 这与原始的表格是完全独立的——除非你点击右上角**将用户同步到表格**。

在**角色**一栏我们点右上角**增加角色**，例如图中我们创建了一个**辅助管理**角色：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416625536.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416625536.png)

现在回到之前的页面设置，刷新后你将在这里看见**辅助管理**这个角色，选中它，这一页就只能被**辅助管理**查看了

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416833991.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416833991.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416904351.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416904351.png)

## 发放应用

至此，我们已经编辑完毕主要的内容。下面的问题是，我们要如何发放这个应用？

首先，在编辑应用的左侧我们可以看见齿轮，这是整个应用的设置。这里我们可以设置一个好记的自定义URL。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701416991015.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701416991015.png)

但是直接复制这个应用发放，你会发现收到的人点开没有权限！你需要打开**用户和角色管理**-**开放式访问**-**任何登录用户访问应用程序都将自动注册为应用程序用户**，并设置自动注册的角色：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701417316837.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701417316837.png)

这样，用户拿到上方的 App URL 或者前文的自定义 URL，点击登录后都会自动创建为设定的角色并注册为此应用的用户。

实际上，本来我们需要在**用户和角色管理**内的**邀请链接**，为**默认角色**（或者你自创的某个角色）创建一个邀请链接，访问这个链接的人登录后才会自动按照这个角色注册为应用用户，这也是不进行上文设置会提示没有权限的原因。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701417123286.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701417123286.png)

但是，**开放式访问**的功能简化了这一流程。前面的“辅助管理”自定义角色可以单独创建邀请链接发放给协作者：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/scaled-1680-/image-1701417610334.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-12/image-1701417610334.png)

------

在完成上述步骤后，你应该得到了：
+ 一个公开的APP链接地址，预约申请人和负责人访问后进行查询、预约或取消预约的操作
+ 一个发给其他同事的辅助管理链接

分发公开的APP链接地址给需要预约的用户，然后将辅助管理的链接分发给一起管理（主要是解决小概率冲突才需要人工介入，其余情况基本为自动化计算）的同事。

需要注意的是，上文所有的查询功能**必须基于用户登录**才能实现，因此**千万不能开启开放式访问-允许匿名用户访问**。

# 作业收集评分表（新版）

在现代教育环境中，高效地管理作业收集、批改和评分是每位教师的重要任务。eScience中心提供的协同表格是一个强大、灵活的工具，可以帮助教师或助教轻松实现这一目标。

本文将介绍如何使用协同表格的作业收集评分表。

## 从模板创建

点击从模板创建，选择 **“教学与学习-作业收集评分表（新版）”** 并创建。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739769063924.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739769063924.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739769102739.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739769102739.png)

## 配置应用角色

进入表格后，无需做任何调整，直接点击界面右上角的 **“应用”**。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739769209472.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739769209472.png)

这里已经有个 **“作业提交系统”** 创建完毕了。鼠标移动到这一行，点击右侧的笔状图标进行编辑。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739769237494.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739769237494.png)

进入编辑页面，如下图：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771251354.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771251354.png)

该应用有三个页面，预期如下设计：

- 提交作业：这个页面所有人可见，用于学生提交作业，不允许重复提交。（这些已经设置好了，使用模板无需自行配置。）
- 修改作业：这个页面所有人可见，用于学生查看提交情况或修改提交。但用户只能看见学号一栏和当前登录用户学号一致的行。（这些已经设置好了，使用模板无需自行配置。）
- 评分页面：这个页面只有管理员和助教可见，但是不能修改文件。只可以修改评分。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771263204.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771263204.png)

所以除了默认角色外，应用应当有三个角色：

- 管理员：创建表格的人或者群组管理员，这是默认创建的
- **学生：用于收集作业的角色，需要用户创建**
- **助教：用于批改作业的角色，需要用户创建**

> 注：通用应用功能的角色权限与表格内原先的权限完全独立！因此不需要管原来的表格是什么样，我们只需要关心这个应用内的权限如何。

在左侧点击如图所示的图标，进入**用户与角色管理**。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771293945.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771293945.png)

进入**角色**设置页，增加“学生”和“助教”两个角色。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739770112724.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739770112724.png)


鼠标移动至“评分页面”的小齿轮：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771337766.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771337766.png)

右下角会出现权限设置，如图设置即可：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739770294984.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739770294984.png)

在这一步，可以设置评分后台只有助教和管理员看见。

## 创建并分配链接

最后来到 **“邀请链接”** 一栏，分别给“助教”角色和“学生”角色按需求创建一个链接并发放。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739770447741.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739770447741.png)

### 学生视角

给学生发放学生角色链接后，点击后登录账号，该账号会自动以学生身份加入该应用。

学生将看不见评分后台，在**提交作业**页可以提交作业文件：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771568469.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771568469.png)

在**修改作业**页可以查看提交情况和修改，也能看见最终分数。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771650687.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771650687.png)


### 助教视角

助教可以看见所有页面，在**评分页面**助教能够看见所有人作业：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771811318.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771811318.png)

点开上传的文件列，点击对应文件可以在线预览作业文件（仅限常见Word、PDF、图片文件）。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739771993064.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739771993064.png)

也可以选择批量全部下载：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739772071583.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739772071583.png)

根据自定义的拼接文件名，下载文件会相应的重命名：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739772096661.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739772096661.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739772175658.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739772175658.png)

> 通过联用Box云盘还可以实现直接下载数据到云盘里，免去下载上传备份的麻烦。具体请参考文章：[《协同表格&云盘梦幻联动！》](https://mp.weixin.qq.com/s/Ug1t5mQzdUzI7HMQyQOzBg)

在一旁的“评分”即可直接填入数字：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739772228320.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739772228320.png)

## 停止学生提交/修改作业

将**提交作业**页面权限全部修改为管理员或助教，

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739772419681.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739772419681.png)

**修改作业**页面把除了“谁可以查看页面”**以外**的权限设置为管理员。这样就可以保留学生查看权限但不允许修改了。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739772710616.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739772710616.png)

## 特别提醒

### 一张表收整个学期作业

原先的模板仅仅用于单次作业收集，但更多的情况下，我们需要一学期收好多次作业，那要怎么修改呢？这可以稍稍修改实现：

首先，增加一个单选列，为**作业批次**

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739776562009.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739776562009.png)

然后编辑应用-**提交作业**页面，添加**作业批次**字段：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739776638601.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739776638601.png)

并且设置默认值，以及不能更改：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739776656741.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739776656741.png)

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739776665403.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739776665403.png)

这个页面设置的“禁止添加重复记录”也设定为：学号和作业批次不得重复。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739776706172.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739776706172.png)

应用-**修改作业**页面的设置中，取消**作业批次**的预隐藏并且设置为只读。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739776822506.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739776822506.png)

评分页面的预隐藏和只读设置同上。

当然，如果嫌麻烦，也可以每个批次单独创建一个表。这种情况就更建议先创建一个文件夹方便管理了。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739776986228.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739776986228.png)

### 上传作业文件管理

在刚登录的主界面点击头像会显示用量：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/scaled-1680-/image-1739777054618.png)](https://doc.nju.edu.cn/uploads/images/gallery/2025-02/image-1739777054618.png)

目前，表格用户每人有100G空间。

# 常用正则表达式

> 表格在3.0版本之后引入了对文本列的格式检查，其中根据用户输入的正则表达式可以实现自定义限制格式。考虑到大多数师生对于正则表达式比较陌生，我们在这里会不定期更新一些遇到的可能需要的正则表达式。同时也欢迎加入QQ群：2343870，申请添加不在此处的正则表达式。

## 什么是正则表达式

正则表达式，简单来说，就是可以通过编写一种“公式”来匹配一段文字是否有对应格式的部分，而后可以进行查找、替换、提取等等操作。

[![图片来自 https://www.runoob.com/wp-content/uploads/2018/09/regexp-cn.png](https://doc.nju.edu.cn/uploads/images/gallery/2022-06/scaled-1680-/image-1654653491800.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-06/image-1654653491800.png)

表格中只是使用了最简单的匹配，如果你对正则表达式比较感兴趣，可以参考下列的资料：

中文：

+ <https://www.runoob.com/regexp/>

英文：

+ <https://regexr.com/>
+ <https://regex101.com/>
+ <https://www.regular-expressions.info/>

## 常用参考

这里我们会列出一些可能经常使用的正则表达式参考，直接复制粘贴即可使用。

### 学号/工资号或其他人员

人员编码标准可能会因为学校政策变动导致有些年份不一样，因此请以实际情况为准。可以参考[信息化建设管理服务中心](https://itsc.nju.edu.cn/xxgzzd/list.htm)的有关文件如《南京大学公共数据编码标准》。

#### 纯数字

纯数字的帐号例如本科生和部分教职工，以及未来可能统一的编码规范等。

最简单的纯数字检查：

```
^[0-9]+$
```

指定长度的纯数字检查：

```
^[0-9]{n}$
```

其中`n`替换为你需要的长度。

如果是一个范围（例如学号长度不同年份有变化），那就是：

```
^[0-9]{n,m}$
```

其中`n`和`m`替换为你需要的长度，表示长度为n\~m。

如果不设上限，

```
^[0-9]{n,}$
```

其中`n`替换为你需要的长度，表示长度为至少n。前面例子中的`+`其实和`{1,}`是等价的。

类似地，`*`和`{0,}`等价，`?`和`{0,1}`等价。

#### 含有大写字母

有很多早期的学号（比如研究生）和教职工是存在一些大写字母前缀的。

粗略的做法和上面类似，要求是“大写字母+数字”的格式：

```
^[A-Z]+[0-9]+$
```

当然你也可以进一步限制，例如只允许填写专硕学号：

```
^MF[0-9]+$
```

允许填写专硕、学硕的学号：

```
^(MF|MG)[0-9]+$
```

前面提到的限定数字长度可以一并使用。其他前缀也是类似的。

### 学术相关

#### DOI号

```
^10\.[0-9]{4}/\S+$
```

# 表格迁移

由于协同表格服务的账户采用南京大学统一身份认证，因此**如果统一身份认证账户因为毕业离职或身份变更被停用，表格也无法登录了**。不少用户问：**如果我离开南大了，再也登不了我的协同表格账户，我的表格怎么办？** 由于当前协同表格尚未实现自助迁移功能，您可以选择下列方式之一来处理该情况：

## 方案一：在群组内创建表格

需要日常注意在群组内创建表格，而非通过“共享给群组”或“共享给用户”将表格共享给别人。前者属于群组的表格，可以通过自助转让群组来交接给他人；后者表格仍然属于个人且不支持自助迁移。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/scaled-1680-/image-1686986017941.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/image-1686986017941.png)

通过在群组内创建表格，用群组管理来实现表格的管理，即便群主离校也可转让。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/scaled-1680-/image-1686986147018.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/image-1686986147018.png)

## 方案二：复制或导入导出

### 复制共享的表格

对于共享给自己的表格，如果对方开启了相应的权限，可以通过“复制”功能将其直接复制到新的账户或群组下：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/scaled-1680-/image-1686986464297.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/image-1686986464297.png)

### 手动导出/导入

若已经存在一些重要的表格在个人名下的，可以先手动导出`.dtable`文件：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/scaled-1680-/image-1686986305323.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/image-1686986305323.png)

之后再在创建表格出选择从文件导入，导入先前导出的`.dtable`。

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/scaled-1680-/image-1686986365029.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/image-1686986365029.png)

但是注意，无论是复制还是导出导入，**本质上是克隆了一份内容和原先表格一致但并不等同于原表格的文件**，且需要用户在表格内关闭下面的安全设置：

[![](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/scaled-1680-/image-1686986679719.png)](https://doc.nju.edu.cn/uploads/images/gallery/2023-06/image-1686986679719.png)

除此之外，此方法可能存在下列问题：

1. 含有大量附件、图片的超大表格导出导入缓慢，或者缺失内容
2. 原先表格内的分享链接、表单等等可能会丢失，旧的链接仍然指向被复制、导出的旧表格

因此请务必检查此方法转移的表格是否可用。

## 方案三：账号变更

### 变更须知

- 新旧账号必须是同一个自然人的
- 新账号必须不存在（没有登录过协同表格），或者见下方流程的事项4写明
- 旧账号将完全变更为新账号，新账号继承旧账号的一切

### 变更流程

1. 用自己的南京大学邮箱给yaoge@nju.edu.cn发送邮件
2. 邮件标题：表格账号变更
3. 邮件内容：姓名、旧学工号、新学工号
4. 如果新账号已存在，确保新账号无数据并写明确认删除新账号

# 个人扩容

### 说明

可以为一个或一批协同表格账号的容量扩容，仅超出个人账号免费容量的额外部分收费。

### 如何扩容

由学校教职工发邮件给 yaoge@nju.edu.cn 申请扩容，列明姓名/学工号和申请扩容的容量（以GB或TB计），开通成功后会收到邮件回复，并且登录[南大表格](https://table.nju.edu.cn/universal-apps/)可以查询到相关信息。

## 收费
个人扩容需收费，参照[收费办法](https://doc.nju.edu.cn/books/efe93/page/d09bf#bkmrk-%E4%BA%91%E7%9B%98%E5%AD%98%E5%82%A8)中云盘存储（0.00329元/GB/天≈1200元/TB/年），根据[校内转账说明](https://hpc.nju.edu.cn/zh/hpc/5052-zhuanzhang)缴费。

# 最大限制

|类别|限制项|限制数量|额外说明|
|----|------|--------|--------|
|表格|表格中行数量|10万|超过10万行不能添加新行<br>(大数据数据不在此限制)|
||表格中行数量上限|15万|超过15万行表格不能加载|
||大数据存储行数量|无限制||
||表格中子表数量|200||
||子表中列数量|500||
||外链数量|100||
||视图外链数量|100||
||外部应用数量|100||
||表单数量|100||
||共享给用户数量|2000||
||协作人加载数量|500||
||外部应用账号加载数量|100||
|API 操作|单次操作增加行的数量|1000|通过UI操作无此限制|
||单次操作修改行的数量|1000||
||单次操作删除行的数量|10000||
||单次操作移动行的数量|1000||
|API 调用|单个 Base API 调用|600次/分钟、50000次/天||
||获取表格中的 Rows|100次/分钟、6000次/小时|如需频繁调用可用 SQL 查询 API 代替|
||单个 Base SQL 调用|5000次/天||
|外链查看|外链查看次数|300次/分钟||
|导入导出|导出整个表格|10GiB||
||导出子表|1万行或100万单元格||
||导出普通视图为 Excel|100万个单元格||
||导入 Excel/CSV 文件|文件大小10MB、数据5万行||
|大数据导入导出|导入 Excel 到大数据视图|100万行||
||更新 Excel 到大数据视图|100万行||
||导出大数据视图为 Excel|100万行||
|群组|群组成员数|5000||
||群组中的表格数|500||
|公共数据集|公共数据集同步|最多同步前50000个条目||

# 【教程合集】eScience 公众号协同表格教程合集

所有云盘原创教程协同表格请访问下面的公众号合集：
- [微结构eScience #协同表格](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyMjQ0MjMzOQ==&action=getalbum&album_id=1699551289480642561)

下面是对合集中内容的说明：

1. [模板上新啦！快来试试离返校登记信息模板~](https://mp.weixin.qq.com/s/F-HNOOjD8arwxt_RoRAOsA): 通过模板创建一个新表格的简单教程，当前模板有 作业收集、请假记录、疫情防控收集表 等。

2. [进阶教程：制作可自助查询的信息表格](https://mp.weixin.qq.com/s/pXVNUGOZWWgZAldnrGcvEA): 可以允许不同用户查看到不同的数据，例如：期末成绩公示。

3. [校内免费问卷制作平台你还不知道？](https://mp.weixin.qq.com/s/q6xBlXzW5qhftfI7b0cwWw): 创建一个问卷收集信息，当问卷被填写时，可以配置邮件通知。

4. [我开了一个匿名「提问箱」，快来向我提问吧！](https://mp.weixin.qq.com/s/lU-FdoN3SZnGdnIkmph9EA): 每个人向表格中写入内容，但是无法查看整个表格，例如：反馈收集、问答记录、匿名提问箱等。

5. [疫情防控信息收集表模板紧急上新](https://mp.weixin.qq.com/s/4nx7h8LF4bACJOK6MWI3ww): 模板中《疫情防控信息收集表》的简易说明书。

6. [今日小技巧：在 Table 中敲回车新建行](https://mp.weixin.qq.com/s/aYlwtKtGeqniUmlw_3p2ug)

7. [今日小技巧：从表单问卷的信息中提取填写者姓名学号](https://mp.weixin.qq.com/s/jex687myJJo-bg5e4UPxGw)

8. [协同表格 NJU Table 重要注意事项](https://mp.weixin.qq.com/s/9xXC1zfwWSIp9w3sgbLTqQ): 两个常见问题：查看部分提交者上传内容异常（图片查看时后台显示为白块、上传的文件后台大小为 0 Byte)和浏览器兼容问题（内容是空白、功能不全、无法正常用浏览器下载）。

9. [Table 的链接有几样分享法，你知道么？](https://mp.weixin.qq.com/s/F4xnHPvQq5m8fwcfrCkazw): 内部共享链接、外部查看链接、其他特殊功能链接的详细介绍和功能对比。

10. [模板上新：让我看看谁才是“锦鲤”](https://mp.weixin.qq.com/s/sW8769tP3lX_aPLoTmiqcw): 模板中《抽奖表》的说明。

11. [模板上新：常态化核酸检测每周检测人员信息表](https://mp.weixin.qq.com/s/udb-SZRlmseRHn26S2Rhdg): 模板中《常态化核酸检测每周检测人员信息表》的说明。

12. [【附食谱】冬至啦，南大协同表格请你吃饺子和汤圆](https://mp.weixin.qq.com/s/h341NSrT0yKqPLvT34D1IQ): 协同表格中，脚本功能的展示。

官方教程
- [使用手册](https://docs.seatable.cn/published/seatable-user-manual/)
- [入门介绍](https://market.seatable.cn/videos/?name=seatable-introduction)
- [使用案例](https://docs.seatable.cn/published/seatable-customer-story/)
- [视频教程](https://market.seatable.cn/videos/)

# 协同表格Python脚本Runner预装环境

协同表格的Python自动化脚本运行在容器内，该容器内预装的主要Python模块如下：

| 模块名                    | 用途描述                                                       |
|---------------------------|---------------------------------------------------------------|
| cn2an                      | 用于将中文数字转换为阿拉伯数字，反之亦然。                        |
| cryptography               | 提供加密算法、哈希、签名等加密功能的全面库。                      |
| numpy                      | Python的核心科学计算库，支持大规模数组和矩阵的运算。             |
| pandas                     | 强大的数据分析与处理库，支持DataFrame等灵活的数据结构。         |
| pdfmerge                   | 用于合并多个PDF文件的工具库。                                    |
| pillow                     | 图像处理库，扩展了Python Imaging Library（PIL），支持各种图像操作。 |
| pillow_heif                | 为Pillow添加对HEIF格式图像的支持。                               |
| PyMySQL                    | 一个纯Python的MySQL客户端库，用于与MySQL数据库交互。              |
| pyOpenSSL                  | Python对OpenSSL库的封装，提供SSL和TLS功能，支持安全通信。         |
| pypdf                      | 用于处理PDF文档的库，支持读取、写入和修改PDF文件。               |
| python-barcode             | 生成各种格式条形码的库（如EAN、Code 128）。                      |
| python-dateutil            | 用于解析、处理和格式化日期时间的库，扩展了Python的datetime模块。  |
| python-engineio            | 管理WebSocket和HTTP长轮询连接的库，常与Socket.IO一起使用。       |
| python-socketio            | 用于构建基于WebSocket的实时双向通信应用的库。                     |
| qrcode                     | 用于生成QR码的库，可以从字符串或其他数据生成二维码。            |
| requests                   | 一个简单易用的HTTP库，用于发送HTTP请求和处理响应。               |
| scipy                      | 科学计算库，扩展了NumPy，提供优化、积分、插值等函数。             |
| seatable-api               | SeaTable的Python客户端库，用于通过API与SeaTable交互。            |
| XlsxWriter                 | 用于从Python创建Excel（XLSX）文件的库，支持格式设置和图表等功能。  |
| PyMuPDF                    | 用于处理和操作 PDF、XPS、OpenXPS、CBZ、EPUB 和其他类似格式的文档。 |



由于云端容器只有唯一环境，所以为了避免依赖冲突，如您有其他需求，请在QQ群或邮件联系姚舸老师申请后，由中心评估添加。

申请添加的库原则上不能是：

1. 与当前已有的云端环境其他库版本存在冲突
2. 与当前已有的云端环境其他库功能重复
3. 需要申请许可证才能使用
4. 该库开发不积极或在该领域几乎没有用户
5. 其他由于版权、性能等不适合在云端环境运行的情况