鱼C论坛

 找回密码
 立即注册
查看: 290|回复: 1

[技术交流] python 修改别人的outlook予定表

[复制链接]
发表于 2024-2-16 21:02:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zhanlp 于 2024-2-16 21:03 编辑

前几天发了求助帖,重新整理下。
我想给组员们设置outlook的予定表。比如A想9号休假,那么在所有组员的outlook的calendar里面添加这个预定。
但A如果想要把休假予定改成12号的话,他可以自己变更这个预定。
我尝试了SendUsingAccount,并没有什么效果(代码1)。
后来FishC AI 小助理回答我需要给组员设置编辑予定表的权限。于是换了个思路。
予定表如果由我发送给组员,那组员是不可更改日期的,除非我给他们设置权限。但我没找到代码1里面设置权限的方法。期待小伙伴们的意见。
我的新新思路是创建一个共享予定表文件夹,把它共享给我的组员,并且给他们设置编辑共享予定表的权限。
那么我只要往这个共享予定表中添加预定就好。那么任何人都可以看的加,也都可以自由修改自己的休假日期。

代码1
  1. import win32com.client as win32com
  2. try:
  3.     outlook = win32com.Dispatch("Outlook.Application")
  4. except win32com.client.pywintypes.com_error as e:
  5.     print("error")
  6. namespace=outlook.GetNamespace('MAPI')
  7. appt =outlook.CreateItem(1)
  8. appt.Recipients.Add("xxxx@outlook.com")
  9. appt.Start = "2024-2-16 08:00"
  10. appt.SendUsingAccount="yyyy@outlook.com"
  11. appt.Subject = "create shared calender test"
  12. appt.MeetingStatus=1
  13. appt.save()
  14. appt.Send()
复制代码



代码2
  1. import win32com.client
  2. outlook = win32com.client.Dispatch("Outlook.Application") #operate app
  3. namespace = outlook.GetNamespace("MAPI") #get api
  4. recipient = namespace.createRecipient('xxxx@outlook.com')# input my email
  5. recipient.Resolve()
  6. Folders = namespace.GetDefaultFolder(9)
  7. shared_calendar=Folders.Folders["sharedcalendar"]#get share calender name
  8. appointment = shared_calendar.Items.Add(1) # 1=outlook appointment item ( create events)
  9. appointment.Start = '2024-2-16 10:00'
  10. appointment.Subject = "Test booking"
  11. appointment.Duration = 60
  12. appointment.Save()
  13. appointment.Send()
复制代码


最后,非常感谢FishC AI 小助理的回答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-2-16 21:02:33 | 显示全部楼层
你的新思路是创建一个共享予定表文件夹,并将其共享给组员,然后给他们设置编辑共享予定表的权限。这样,你只需往共享予定表中添加预定即可,任何人都可以查看和自由修改自己的休假日期。

以下是修改并完善的代码示例:

  1. import win32com.client

  2. def create_appointment(start, subject, duration):
  3.     outlook = win32com.client.Dispatch("Outlook.Application")
  4.     namespace = outlook.GetNamespace('MAPI')

  5.     # 创建共享予定表文件夹
  6.     shared_calendar = namespace.Folders['共享予定表文件夹']

  7.     # 给组员设置编辑共享予定表的权限(假设组员邮箱列表保存在email_list中)
  8.     email_list = ['xxxx@outlook.com', 'yyyy@outlook.com']
  9.     for email in email_list:
  10.         member = namespace.CreateRecipient(email)
  11.         member.Resolve()
  12.         folder_permission = shared_calendar.permissions.Add(member, win32com.client.constants.olFolderEditor)
  13.         folder_permission.Save()

  14.     # 往共享予定表中添加预定
  15.     appointment = shared_calendar.Items.Add(1)  # 1=outlook appointment item (创建事件)
  16.     appointment.Start = start
  17.     appointment.Subject = subject
  18.     appointment.Duration = duration
  19.     appointment.Save()
  20.     appointment.Send()

  21. # 示例:创建一个预定
  22. create_appointment("2024-2-16 10:00", "Test booking", 60)
复制代码


请将代码中的`共享予定表文件夹`替换为实际的共享予定表文件夹名称,将`xxxx@outlook.com`和`yyyy@outlook.com`替换为实际的组员邮箱。

这样,组员们就可以自由修改自己的休假日期,而你可以通过往共享予定表中添加预定来更新所有人的日程。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-29 01:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表