/// <summary>
        /// Run the code example.
        /// </summary>
        public void Run(AdManagerUser user)
        {
            using (CmsMetadataService cmsMetadataService = user.GetService <CmsMetadataService>())
            {
                string cmsMetadataKeyName = "INSERT_CMS_METADATA_KEY_NAME_HERE";

                // Create a statement to select CMS metadata values.
                int pageSize = StatementBuilder.SUGGESTED_PAGE_LIMIT;
                StatementBuilder statementBuilder = new StatementBuilder()
                                                    .Where("cmsKey = :cmsMetadataKeyName")
                                                    .OrderBy("id ASC")
                                                    .Limit(pageSize)
                                                    .AddValue("cmsKey", cmsMetadataKeyName);

                // Retrieve a small amount of CMS metadata values at a time, paging through until
                // all CMS metadata values have been retrieved.
                int totalResultSetSize = 0;
                do
                {
                    CmsMetadataValuePage page = cmsMetadataService.getCmsMetadataValuesByStatement(
                        statementBuilder.ToStatement());

                    // Print out some information for each CMS metadata value.
                    if (page.results != null)
                    {
                        totalResultSetSize = page.totalResultSetSize;
                        int i = page.startIndex;
                        foreach (CmsMetadataValue cmsMetadataValue in page.results)
                        {
                            Console.WriteLine(
                                "{0}) CMS metadata value with ID {1} and name \"{2}\" associated "
                                + " with key ID {3} and name {4} was found.",
                                i++,
                                cmsMetadataValue.cmsMetadataValueId,
                                cmsMetadataValue.valueName,
                                cmsMetadataValue.key.id,
                                cmsMetadataValue.key.name);
                        }
                    }

                    statementBuilder.IncreaseOffsetBy(pageSize);
                } while (statementBuilder.GetOffset() < totalResultSetSize);

                Console.WriteLine("Number of results found: {0}", totalResultSetSize);
            }
        }
        /// <summary>
        /// Run the code example.
        /// </summary>
        public void Run(AdManagerUser user, long cmsMetadataKeyId)
        {
            using (CmsMetadataService cmsMetadataService = user.GetService <CmsMetadataService>())
            {
                // Create a statement to select CMS metadata values.
                int pageSize = StatementBuilder.SUGGESTED_PAGE_LIMIT;
                StatementBuilder statementBuilder = new StatementBuilder()
                                                    .Where("cmsKeyId = :cmsMetadataKeyId and status = :status")
                                                    .OrderBy("id ASC")
                                                    .Limit(pageSize)
                                                    .AddValue("cmsMetadataKeyId", cmsMetadataKeyId)
                                                    .AddValue("status", CmsMetadataValueStatus.INACTIVE.ToString());

                // Retrieve a small amount of CMS metadata values at a time, paging through until
                // all CMS metadata values have been retrieved.
                int totalResultSetSize = 0;

                do
                {
                    CmsMetadataValuePage page = cmsMetadataService.getCmsMetadataValuesByStatement(
                        statementBuilder.ToStatement());

                    if (page.results != null)
                    {
                        totalResultSetSize = page.totalResultSetSize;
                        int i = page.startIndex;
                        foreach (CmsMetadataValue cmsMetadataValue in page.results)
                        {
                            Console.WriteLine(
                                "{0}) CMS metadata value with ID {1} will be activated",
                                i++, cmsMetadataValue.cmsMetadataValueId);
                        }
                    }

                    statementBuilder.IncreaseOffsetBy(pageSize);
                } while (statementBuilder.GetOffset() < totalResultSetSize);

                Console.WriteLine("Number of CMS metadata values to be activated: {0}",
                                  totalResultSetSize);

                if (totalResultSetSize > 0)
                {
                    // Modify statement.
                    statementBuilder.RemoveLimitAndOffset();

                    // Create action.
                    Google.Api.Ads.AdManager.v202011.ActivateCmsMetadataValues action =
                        new Google.Api.Ads.AdManager.v202011.ActivateCmsMetadataValues();

                    // Perform action.
                    UpdateResult result = cmsMetadataService.performCmsMetadataValueAction(action,
                                                                                           statementBuilder.ToStatement());

                    // Display results.
                    if (result != null && result.numChanges > 0)
                    {
                        Console.WriteLine("Number of CMS metadata values activated: {0}",
                                          result.numChanges);
                    }
                    else
                    {
                        Console.WriteLine("No CMS metadata values were activated.");
                    }
                }
            }
        }