سؤال

لقد كتبت بعض أدوات Python في الماضي لاستخراج البيانات من جهات اتصال Outlook الخاصة بي.الآن، أحاول أن يُعدِّل جهات اتصال Outlook الخاصة بي.أجد أن التغييرات التي أجريتها تمت ملاحظتها بواسطة Outlook، ولكنها لا تلتزم.يبدو أنني أقوم بتحديث بعض ذاكرة التخزين المؤقت، ولكن ليس السجل الحقيقي.

الكود واضح ومباشر.

import win32com.client
import pywintypes

o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("My Profile Name")
contacts = profile.Folders.Item("Contacts")
contact = contacts.Items[43] # Grab a random contact, for this example.
print "About to overwrite ",contact.FirstName, contact.LastName
contact.categories = 'Supplier' # Override the categories

# Edit: I don't always do these last steps.
ns = None 
o = None

في هذه المرحلة، أنتقل إلى Outlook، الذي يتم فتحه لعرض بطاقات العناوين التفصيلية.

ألقي نظرة على ملخص جهة الاتصال (بدون فتحه) ولم تتغير الفئة (لم يتم تحديثها؟).

قمت بفتح جهة الاتصال وقد تغيرت فئتها، أحيانا.(لست متأكدًا من الوقت، ولكن يبدو أنه مرتبط بذاكرة التخزين المؤقت.) إذا تم تغييره، فإنه يطالبني بحفظ التغييرات عندما أقوم بإغلاقه وهو أمر غريب، لأنني لم أغير أي شيء في واجهة مستخدم Outlook.

إذا قمت بإنهاء Outlook وإعادة تشغيله، فستختفي التغييرات.

أنا يشتبه أنا أفشل في الاتصال حفظ التغييرات, ، لكن لا يمكنني رؤية الكائن الذي يدعمه.

لذلك سؤالي هو:

  • هل يجب أن أتصل بـ SaveChanges؟إذا كان الأمر كذلك، أين هو؟
  • هل أرتكب خطأً سخيفًا آخر يتسبب في تجاهل بياناتي؟
هل كانت مفيدة؟

المحلول

أعتقد أن هناك طريقة .Save() في جهة الاتصال، لذا عليك إضافة:

جهة الاتصال.حفظ ()

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top