Before coming on to the Time Trigger Azure let's understand the Azure Function first,

Azure Function

Azure Functions is a service that lets you launch serverless applications and run event-triggered code on Microsoft Azure without the need to explicitly manage infrastructure.

Azure Functions enables you to write serverless code to handle events at scale, with minimal overhead and cost.

Time Trigger Azure Function

Timer-triggered Azure functions allow you to run a function on a configurable schedule. Unlike HTTP-triggered Azure functions, timing info is stored in an Azure storage account and then passed to the function on execution.

Overview

In this article, we will cover SharePoint List CRUD Operation using Time Trigger Azure Function. There can be many occasions where we need to perform scheduled operations with SharePoint Online Lists. In On-Premises we used to have Timer Job to perform any custom operations. Time Trigger Azure Function can be used in similar cases.

Since it will schedule operation, there will not be any user interactions. We will Client ID and Client Secret to authenticate. We will be using SharePoint app-only authentication.

Follow below points,

Open the appregnew.aspx page. click on the Generate button to generate a client ID and client secret.

https://{tenant name}.sharepoint.com/_layouts/15/appregnew.aspx

Note down the retrieved information (client ID and client secret). We will need this in the next steps.

In the Title field, type the name of the App. For App Domain type www.localhost.com and to Redirect URI, type https://www.localhost.com

Create Time Trigger Azure Function Project

For the sake of this article, we are going to create C#.net-based Azure function but you can choose to do it in other supported languages also...

Open Visual Studio (not code) - Create a new Project and Choose Azure Functions.

Once it is installed it will be visible under Installed tab.

Use below code,

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Microsoft.SharePoint.Client;
using System.Linq;
using PnP.Framework;
namespace AFGetListItem {
    public class Function1 {
        [FunctionName("Function1")]
        public void Run([TimerTrigger("0 * * * * *")] TimerInfo myTimer, ILogger log) {
            log.LogInformation($ "C# Timer trigger function executed at: {DateTime.Now}");
            try {
                string siteUrl = "Your Site Url";
                string ClientSecret = "YourClientID";
                string ClientId = "ClientSecret";
                using(var clientContext = new AuthenticationManager().GetACSAppOnlyContext(siteUrl, ClientId, ClientSecret)) {
                    Web oWebsite = clientContext.Web;
                    List list = oWebsite.Lists.GetByTitle("CustomList");
                    clientContext.Load(list);
                    clientContext.ExecuteQuery();
                    CamlQuery query = CamlQuery.CreateAllItemsQuery();
                    ListItemCollection items = list.GetItems(query);
                    clientContext.Load(items);
                    clientContext.ExecuteQuery();
                    string result = " CustomList items Count: " + items.Count();
                    log.LogInformation(result);
                    foreach(ListItem itm in items) {
                        Console.WriteLine("Title: " + itm["Title"]);
                    }
                }
            } catch (Exception ex) {
                log.LogInformation($ "C# Timer trigger function executed Exception at:" + ex.Message);
            }
        }
    }
}

Test the Project

Run the Project using F5 and make sure you are seeing below the window