All About Notion

一个 powershell 脚本,用于将磁盘上的目录转换为 Notion.so 数据库页

notion image
Directory-to-Notion (DtN) 是一个 powershell 脚本,它将磁盘上的目录转换为 Concept 数据库页。一个目录表示数据库,其中立即包含的每个子目录都成为一页。可以使用简单的 powershell 脚本添加自定义属性。
notion image
编写DtN是为了跟踪3D资产网站ambientCG的所有生产文件及其各个阶段。可以根据哪些文件存在(不存在)或它们的大小来检测生产管道的不同阶段。
notion image
但是,DtN非常灵活,可以适应任何场景,其中一个人有一堆任务,所有任务都有一个相似的工作流程,每个任务都由一个文件夹表示。一个例子是YouTube频道的持续制作,其中每个视频都有原始素材,转换后的素材,缩略图和其他项目文件分组在一个文件夹中。DtN可以自动创建一个概念数据库,显示每个视频仍然需要执行哪些步骤。

基本设置

设置脚本需要创建新的概念集成
  1. 下载或克隆文件并将其保存在新文件夹中。Sync-DirectoriesToNotion.ps1
  1. 转到概念 API 集成页面并创建新的集成。选择名称和允许集成读取、更新和插入内容的工作区(所有复选框)。将“用户功能”设置为“无用户信息”。
  1. 提交表单。然后,您将收到一个内部集成令牌 - 一个类似于 的短文本字符串。secret_123...
  1. 在您授予集成访问权限的 Notion 工作空间中创建新数据库。单击“共享”并以编辑器身份“邀请”集成。
  1. 获取包含在页面 URL 中的数据库 ID。ID 是最后一个斜杠 (/) 和问号(或 url 的末尾)之间的随机数字字符串。
https://www.notion.so/myworkspace/309476359187414319cb9912e6585f48 | Database ID | https://www.notion.so/myworkspace/309476359187414319cb9912e6585f48?v=fe3f5e16cc05406c18ac00296ffba5e7 | Database ID |
  1. 现在,您拥有了将目录同步到 Notion 所需的所有信息。像这样启动脚本:
PS> ./Invoke-NotionDirectorySync.ps1 -NotionDatabase <Database ID> -NotionSecret <Secret String> -Directory "C:/Your/Target/Directory"
每个目录都将变成一张概念卡。该 ID 将保存到每个目录内调用的文件中。这允许脚本跟踪目录,即使它被重命名。id.notion

向数据库添加属性

您可以向数据库添加属性以对文件执行自动检查。这可用于计算文件夹中的照片数量,检查是否已创建特定文件或获取文件大小。

创建检查脚本

这些“检查脚本”必须位于一个文件夹中,并且它们的名称决定了将为它们创建的数据库属性的类型和名称。该模式的工作原理如下:
[Type]-[Name].ps1
[Type]可以是 、 或 。(将来可能会支持更多属性类型)。 表示属性的名称。以下是可能的文件名的几个示例:TextNumberCheckbox[Name]
Checkbox-ThumbnailExists.ps1 Number-NumberOfPhotos.ps1 Text-Latest Log Entry.ps1 # Spaces are allowed, just not around the dash (-).

编写脚本

在每个脚本文件中,您现在可以添加代码以对目录执行检查。编写脚本时,可以假定目录的完整路径将包含在变量中。使用将结果写入标准输出(不要使用,它不起作用。下面是一个示例。此脚本检查每个目录中是否存在名为 的文件,并相应地在每个概念页面上设置复选框。$args[0]Write-OutputWrite-HostHelloWorld.txt
# Checkbox-ContainsHelloWorldFile.ps1 $Result = Test-Path -Path "$($args[0])/HelloWorld.txt" -PathType Leaf Write-Output $Result
此脚本创建的每个属性都以点为前缀。这样,您仍然可以添加自己的属性并手动更新它们,而不会干扰自动化。您可以在此存储库的文件夹中找到更多示例脚本。checks.example

运行脚本

要运行检查,只需使用参数对主脚本进行 ex 和调用,该参数应指向包含所有脚本的文件夹:-CheckScriptsDirectory
PS> ./Invoke-NotionDirectorySync.ps1 -NotionDatabase <Database ID> -NotionSecret <Secret String> -Directory "C:/Your/Target/Directory" -CheckScriptsDirectory $PSScriptRoot/checks
badge