PageSourceSearch

https://erpl.io/assets/js/d1361fa3.544dfae4.js

js erpl.io collected 2026-09-25 20:06:13 UTC 3,306 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkerpl_docusaurus=self.webpackChunkerpl_docusaurus||[]).push([[3240],{28453:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>l});var t=r(96540);const a={},s=t.createContext(a);function o(e){const n=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),t.createElement(s.Provider,{value:n},e.children)}},39944:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>o,metadata:()=>t,toc:()=>i});const t=JSON.parse('{"id":"erpl-web/m365/planner","title":"Microsoft Planner","description":"Read and create plans, buckets, and tasks in Microsoft Planner from DuckDB.","source":"@site/docs/erpl-web/m365/planner.md","sourceDirName":"erpl-web/m365","slug":"/erpl-web/m365/planner","permalink":"/docs/erpl-web/m365/planner","draft":false,"unlisted":false,"editUrl":"https://github.com/datazoode/erpl-landingpage/tree/main/docs/erpl-web/m365/planner.md","tags":[],"version":"current","sidebarPosition":6,"frontMatter":{"sidebar_position":6,"title":"Microsoft Planner","description":"Read and create plans, buckets, and tasks in Microsoft Planner from DuckDB.","keywords":["erpl-web","microsoft planner","graph","duckdb"]},"sidebar":"docs","previous":{"title":"Outlook \u2014 Mail, Calendar, Contacts","permalink":"/docs/erpl-web/m365/outlook"},"next":{"title":"Entra ID (Azure AD)","permalink":"/docs/erpl-web/m365/entra-id"}}');var a=r(74848),s=r(28453);const o={sidebar_position:6,title:"Microsoft Planner",description:"Read and create plans, buckets, and tasks in Microsoft Planner from DuckDB.",keywords:["erpl-web","microsoft planner","graph","duckdb"]},l="Microsoft Planner",c={},i=[{value:"Read",id:"read",level:2},{value:"Bulk-create tasks",id:"bulk-create-tasks",level:2}];function d(e){const n={code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.header,{children:(0,a.jsx)(n.h1,{id:"microsoft-planner",children:"Microsoft Planner"})}),"\n",(0,a.jsx)(n.p,{children:"Read your Planner data \u2014 plans, buckets, tasks \u2014 and create tasks in bulk straight from a SQL query."}),"\n",(0,a.jsx)(n.h2,{id:"read",children:"Read"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-sql",children:"SELECT * FROM graph_planner_plans();\nSELECT * FROM graph_planner_buckets(plan => 'Q2 Launch');\nSELECT title, percentComplete, due_date\nFROM graph_planner_tasks(plan => 'Q2 Launch');\n"})}),"\n",(0,a.jsx)(n.h2,{id:"bulk-create-tasks",children:"Bulk-create tasks"}),"\n",(0,a.jsx)(n.p,{children:"Useful for backfilling work from a spreadsheet or upstream system:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-sql",children:"SELECT graph_planner_create_task(\n  plan => 'Q2 Launch',\n  bucket => 'Engineering',  -- resolved by name, no GUID needed\n  title => task_name,\n  due_date => due_date\n)\nFROM new_tasks;\n"})}),"\n",(0,a.jsx)(n.p,{children:"Bucket name resolution is built in \u2014 no need to fetch IDs first."})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.