Partager via


Utiliser Microsoft Azure WebJobs avec Office 365

Vous pouvez implémenter la fonctionnalité de travail du minuteur à l’aide de Microsoft Azure WebJobs ou du Planificateur de tâches Windows pour effectuer des tâches dans SharePoint Online. Un travail de minuteur est un processus répétitif, planifié, en arrière-plan qui s’exécute dans SharePoint pour effectuer certaines tâches.

Par exemple, vous pouvez souhaiter qu’un travail du minuteur copie les données entrées dans une liste SharePoint dans une base de données. Dans SharePoint Online, vous ne pouvez pas déployer de solutions de batterie de serveurs, ce qui correspond à la façon dont les travaux du minuteur ont été déployés dans le passé. Pour implémenter une fonctionnalité de travail du minuteur similaire dans SharePoint Online, vous devez exécuter une application console en tant que tâche web Azure. L’application console accède à SharePoint Online à l’aide du modèle objet côté client (CSOM).

Cet article présente les concepts de base impliqués dans le déploiement d’applications console en tant qu’Azure WebJobs pour exécuter et accéder à vos sites et contenu SharePoint Online.

Remarque

Le code dans cet article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris mais sans s’y limiter, aucune garantie implicite d’adéquation à un usage particulier, à une qualité marchande ou une absence de contrefaçon.

Créer et exécuter une application console en tant qu’Azure WebJob

Pour configurer votre application console pour qu’elle s’exécute en tant qu’Azure WebJob, vous devez :

  1. Créez un compte organization pour azure WebJob à utiliser pour accéder à vos sites et à votre contenu SharePoint.

  2. Créez et configurez l’application console.

  3. Ajoutez du code à l’application console.

  4. Publiez votre application console en tant qu’Azure WebJob.

  5. Exécutez et vérifiez votre tâche web Azure.

Créer un compte organization

Vous devez créer un compte pour azure WebJob à utiliser lors de l’accès aux sites et au contenu SharePoint. Pour plus d’informations, reportez-vous à l’article Ajouter des utilisateurs individuellement ou en bloc à Office 365 - Aide de l’administrateur.

Lorsque la tâche web Azure s’exécute, le champ Modifié par stocke et affiche la valeur entrée dans Nom d’affichage du compte organization. Veillez à choisir un nom d’affichage que vos utilisateurs peuvent facilement identifier en tant que compte utilisé par azure WebJob pour accéder à SharePoint.

Créer et configurer l’application console

Pour créer une application console à exécuter en tant que tâche web Azure, procédez comme suit :

  1. Créez un projet d'application console. Dans Visual Studio, choisissez Nouveau projet>Visual C#>Console Application>OK.

  2. Une fois l’application console créée, choisissez Outils> Gestionnaire >de package NuGetGérer les packages NuGet pour Solution>Online>All.

  3. Recherchez App for SharePoint Web Toolkit.

  4. Choisissez Installer, puis OK.

  5. Sélectionnez Fermer.

  6. Vérifiez que SharePointContext.cs et TokenHelper.cs ont été ajoutés au projet d’application console.

  7. Enregistrez les informations de votre compte dans le fichier app.config en ajoutant l’élément appSettings affiché. Remplacez SPOAccount et SPOPassword par le nom d’utilisateur et le mot de passe du compte organization que vous avez créé précédemment.

     <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
       <startup> 
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
       </startup>
       <appSettings>
         <add key="SPOAccount" value="admin@contoso.onmicrosoft.com"/>
         <add key="SPOPassword" value="Contoso"/>
       </appSettings>
      </configuration>
    

    Attention

    App.config stocke le nom d’utilisateur et le mot de passe du compte organization en texte clair. Cette méthode est utilisée à des fins de démonstration uniquement et ne doit pas être utilisée dans votre déploiement de production de vos tâches web Azure. Nous vous recommandons de chiffrer le mot de passe ou de l’authentification à l’aide d’OAuth avec des jetons d’accès. Pour plus d’informations, consultez le billet de blog de Kirk Evans sur La création d’un complément SharePoint en tant que travail du minuteur.

Ajouter du code à l’application console

Dans Program.cs, ajoutez le code suivant à l’application console.

  1. Ajoutez des instructions using .

     using Microsoft.SharePoint.Client;
     using System.Security;
     using System.Configuration; 
    
  2. Ajoutez les méthodes suivantes à votre classe :

    • Main se connecte à votre site SharePoint, puis utilise le modèle CSOM pour effectuer des tâches sur votre site ou contenu. Cet exemple de code utilise le modèle CSOM pour rechercher une liste et générer le nombre total d’éléments de la liste dans la fenêtre de console. Lorsque vous utilisez Azure WebJobs, vous pouvez voir la sortie de la fenêtre de console dans les détails de l’exécution de la tâche web, qui est expliquée dans Exécuter et vérifier votre tâche web Azure.

    • GetSPOSecureStringPassword lit votre mot de passe à partir de app.config.

    • GetSPOAccountName lit votre nom d’utilisateur à partir de app.config.

	static void Main(string[] args)
	    {
	        using (ClientContext context = new ClientContext("https://contoso.sharepoint.com"))
	        {
	            // Use default authentication mode.
	            context.AuthenticationMode = ClientAuthenticationMode.Default;                 
	            context.Credentials = new SharePointOnlineCredentials(GetSPOAccountName(), GetSPOSecureStringPassword());
	
	            // Add your CSOM code to perform tasks on your sites and content.
	
	            try
	            {
	                List objList = context.Web.Lists.GetByTitle("Docs");
	                context.Load(objList);
	                context.ExecuteQuery();
	
	                if (objList != null &amp;&amp; objList.ItemCount > 0)
	                {
	                    Console.WriteLine(objList.Title.ToString() + " has " + objList.ItemCount + " items.");
	                }
	
	            }
	            catch (Exception ex)
	            {
	                Console.WriteLine("ERROR: " + ex.Message);
	                Console.WriteLine("ERROR: " + ex.Source);
	                Console.WriteLine("ERROR: " + ex.StackTrace);
	                Console.WriteLine("ERROR: " + ex.InnerException);
	
	            }
	        }
	            
	    }
	
	private static SecureString GetSPOSecureStringPassword()
	{
	  try
	  {
	      Console.WriteLine("Entered GetSPOSecureStringPassword.");
	      var secureString = new SecureString();
	      foreach (char c in ConfigurationManager.AppSettings["SPOPassword"])
	      {
	          secureString.AppendChar(c);
	      }
	      Console.WriteLine("Constructed the secure password.");
	
	      return secureString;
	  }
	  catch
	  {
	      throw;
	  }
	}
	
	private static string GetSPOAccountName()
	{
	  try
	  {
	      Console.WriteLine("Entered GetSPOAccountName.");
	      return ConfigurationManager.AppSettings["SPOAccount"];
	  }
	  catch
	  {
	      throw;
	  }
	}
	

Publier votre application console en tant qu’Azure WebJob

Une fois que vous avez terminé de développer votre application console, vous devez déployer l’application console en tant que tâche web Azure. Pour déployer votre application console en tant qu’Azure WebJob, vous pouvez :

Exécuter et vérifier votre tâche web Azure

Après avoir effectué toutes les étapes précédentes, votre tâche web Azure doit s’exécuter et effectuer des tâches dans votre abonnement Office 365. Parfois, vous devrez peut-être effectuer une maintenance ou résoudre les problèmes de vos tâches web Azure. Pour vérifier que votre tâche web Azure est en cours d’exécution :

  • Si votre tâche web Azure a mis à jour un élément SharePoint, comme un élément de liste, le champ Modifié par affiche le compte organization utilisé par Azure WebJob pour accéder à SharePoint.

  • Passez en revue les journaux Détails de la tâche web Pour votre tâche web Azure. Les journaux Détails de la tâche web vous permettent de vérifier quand un travail s’est exécuté, la réussite ou l’échec d’une exécution de travail, toute sortie de la tâche web (par exemple, quand Console.WriteLine a été appelé) et d’autres détails de l’exécution du travail. Pour plus d’informations, consultez la section Afficher l’historique des travaux dans Exécuter des tâches en arrière-plan avec webJobs.

Voir aussi