diff --git a/.Rbuildignore b/.Rbuildignore index a465de25..db0abe73 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -28,3 +28,4 @@ ^tests/testthat/.httr-oauth-salesforcer$ ^travis-tool\.sh$ ^travis-tool\.sh\.cmd$ +^CRAN-RELEASE$ diff --git a/DESCRIPTION b/DESCRIPTION index 59adcd06..172335c0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: salesforcer Title: An Implementation of 'Salesforce' APIs Using Tidy Principles Version: 0.1.4 -Date: 2020-06-07 +Date: 2020-06-13 Description: Functions connecting to the 'Salesforce' Platform APIs (REST, SOAP, Bulk 1.0, Bulk 2.0, and Metadata) . Most all calls from these APIs are supported as they use CSV, XML or JSON data diff --git a/README.Rmd b/README.Rmd index 4ab8a9c1..0d4fd400 100644 --- a/README.Rmd +++ b/README.Rmd @@ -305,7 +305,7 @@ https://StevenMMortimer.github.io/salesforcer. [Get supported salesforcer with the Tidelift Subscription](https://tidelift.com/subscription/pkg/cran-salesforcer?utm_source=cran-salesforcer&utm_medium=referral&utm_campaign=readme) --- -Please note that this project is released with a [Contributor Code of Conduct](https://github.com/StevenMMortimer/salesforcer/blob/master/CONDUCT.md). +Please note that this project is released with a [Contributor Code of Conduct](https://github.com/StevenMMortimer/salesforcer/blob/master/.github/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. [Top](#salesforcer) diff --git a/README.md b/README.md index cc031309..6def8116 100644 --- a/README.md +++ b/README.md @@ -411,7 +411,7 @@ Subscription](https://tidelift.com/subscription/pkg/cran-salesforcer?utm_source= ----- Please note that this project is released with a [Contributor Code of -Conduct](https://github.com/StevenMMortimer/salesforcer/blob/master/CONDUCT.md). +Conduct](https://github.com/StevenMMortimer/salesforcer/blob/master/.github/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. [Top](#salesforcer) diff --git a/docs/articles/getting-started.html b/docs/articles/getting-started.html index b803281b..4ae9e615 100644 --- a/docs/articles/getting-started.html +++ b/docs/articles/getting-started.html @@ -174,8 +174,8 @@

#> # A tibble: 2 x 2 #> id success #> <chr> <lgl> -#> 1 0033s000012MJOpAAO TRUE -#> 2 0033s000012MJOqAAO TRUE +#> 1 0033s000012MKXPAA4 TRUE +#> 2 0033s000012MKXQAA4 TRUE

@@ -188,8 +188,8 @@

#> # A tibble: 2 x 3 #> Id FirstName LastName #> <chr> <chr> <chr> -#> 1 0033s000012MJOpAAO Test Contact-Create-1 -#> 2 0033s000012MJOqAAO Test Contact-Create-2

+#> 1 0033s000012MKXPAA4 Test Contact-Create-1 +#> 2 0033s000012MKXQAA4 Test Contact-Create-2

@@ -208,8 +208,8 @@

#> # A tibble: 2 x 4 #> Id Account FirstName LastName #> <chr> <lgl> <chr> <chr> -#> 1 0033s000012MJOpAAO NA Test Contact-Create-1 -#> 2 0033s000012MJOqAAO NA Test Contact-Create-2

+#> 1 0033s000012MKXPAA4 NA Test Contact-Create-1 +#> 2 0033s000012MKXQAA4 NA Test Contact-Create-2

@@ -225,8 +225,8 @@

#> # A tibble: 2 x 2 #> id success #> <chr> <lgl> -#> 1 0033s000012MJOpAAO TRUE -#> 2 0033s000012MJOqAAO TRUE

+#> 1 0033s000012MKXPAA4 TRUE +#> 2 0033s000012MKXQAA4 TRUE

@@ -237,8 +237,8 @@

#> # A tibble: 2 x 3 #> id success errors #> <chr> <lgl> <list> -#> 1 0033s000012MJOpAAO TRUE <list [0]> -#> 2 0033s000012MJOqAAO TRUE <list [0]>

+#> 1 0033s000012MKXPAA4 TRUE <list [0]> +#> 2 0033s000012MKXQAA4 TRUE <list [0]>

@@ -265,9 +265,9 @@

#> # A tibble: 3 x 3 #> created id success #> <lgl> <chr> <lgl> -#> 1 FALSE 0033s000012MJOuAAO TRUE -#> 2 FALSE 0033s000012MJOvAAO TRUE -#> 3 TRUE 0033s000012MJOzAAO TRUE

+#> 1 FALSE 0033s000012MKXUAA4 TRUE +#> 2 FALSE 0033s000012MKXVAA4 TRUE +#> 3 TRUE 0033s000012MKXZAA4 TRUE

diff --git a/docs/articles/transitioning-from-RForcecom.html b/docs/articles/transitioning-from-RForcecom.html index f0b37b99..78f4c1df 100644 --- a/docs/articles/transitioning-from-RForcecom.html +++ b/docs/articles/transitioning-from-RForcecom.html @@ -172,13 +172,13 @@

result1 <- RForcecom::rforcecom.create(session, objectName=object, fields) result1 #> id success -#> 1 0033s000012MJPJAA4 true +#> 1 0033s000012MKXoAAO true # replicated in salesforcer package result2 <- salesforcer::rforcecom.create(session, objectName=object, fields) result2 #> id success -#> 1 0033s000012MJPOAA4 TRUE

+#> 1 0033s000012MKXtAAO TRUE

Here is an example showing the reduction in code of using salesforcer if you would like to create multiple records.

n <- 2
 new_contacts <- tibble(FirstName = rep("Test", n),
@@ -194,8 +194,8 @@ 

} rforcecom_results #> id success -#> 1 0033s000012MJPTAA4 true -#> 2 0033s000012MJPYAA4 true +#> 1 0033s000012MKXyAAO true +#> 2 0033s000012MKY3AAO true # the better way in salesforcer to do multiple records salesforcer_results <- sf_create(new_contacts, object_name="Contact") @@ -203,8 +203,8 @@

#> # A tibble: 2 x 2 #> id success #> <chr> <lgl> -#> 1 0033s000012MJPdAAO TRUE -#> 2 0033s000012MJPeAAO TRUE

+#> 1 0033s000012MKY8AAO TRUE +#> 2 0033s000012MKY9AAO TRUE

@@ -216,11 +216,11 @@

result1 <- RForcecom::rforcecom.query(session, soqlQuery = this_soql) result1 #> Id -#> 1 0033s000012MGJZAA4 -#> 2 0033s000012MGcXAAW -#> 3 0033s000012MG7oAAG -#> 4 0033s000012MIlnAAG -#> 5 0033s000012MICtAAO +#> 1 0033s000012MKTNAA4 +#> 2 0033s000012MGJZAA4 +#> 3 0033s000012MGcXAAW +#> 4 0033s000012MG7oAAG +#> 5 0033s000012MIlnAAG # replicated in salesforcer package result2 <- salesforcer::rforcecom.query(session, soqlQuery = this_soql) @@ -228,11 +228,11 @@

#> # A tibble: 5 x 2 #> Id Email #> <chr> <lgl> -#> 1 0033s000012MGJZAA4 NA -#> 2 0033s000012MGcXAAW NA -#> 3 0033s000012MG7oAAG NA -#> 4 0033s000012MIlnAAG NA -#> 5 0033s000012MICtAAO NA +#> 1 0033s000012MKTNAA4 NA +#> 2 0033s000012MGJZAA4 NA +#> 3 0033s000012MGcXAAW NA +#> 4 0033s000012MG7oAAG NA +#> 5 0033s000012MIlnAAG NA # the better way in salesforcer to query salesforcer_results <- sf_query(this_soql) @@ -240,11 +240,11 @@

#> # A tibble: 5 x 2 #> Id Email #> <chr> <lgl> -#> 1 0033s000012MGJZAA4 NA -#> 2 0033s000012MGcXAAW NA -#> 3 0033s000012MG7oAAG NA -#> 4 0033s000012MIlnAAG NA -#> 5 0033s000012MICtAAO NA

+#> 1 0033s000012MKTNAA4 NA +#> 2 0033s000012MGJZAA4 NA +#> 3 0033s000012MGcXAAW NA +#> 4 0033s000012MG7oAAG NA +#> 5 0033s000012MIlnAAG NA

diff --git a/docs/articles/working-with-attachments.html b/docs/articles/working-with-attachments.html index f5d31635..05caeea8 100644 --- a/docs/articles/working-with-attachments.html +++ b/docs/articles/working-with-attachments.html @@ -182,12 +182,12 @@

#> # A tibble: 6 x 2 #> id success #> <chr> <lgl> -#> 1 00P3s00000YvbIwEAJ TRUE -#> 2 00P3s00000YvbJ1EAJ TRUE -#> 3 00P3s00000YvbGjEAJ TRUE -#> 4 00P3s00000YvbJ6EAJ TRUE -#> 5 00P3s00000YvbJBEAZ TRUE -#> 6 00P3s00000Yvb9iEAB TRUE

+#> 1 00P3s00000YvpNYEAZ TRUE +#> 2 00P3s00000YvfysEAB TRUE +#> 3 00P3s00000YvpNdEAJ TRUE +#> 4 00P3s00000YvpNiEAJ TRUE +#> 5 00P3s00000YvpNnEAJ TRUE +#> 6 00P3s00000YvpNsEAJ TRUE

@@ -202,12 +202,12 @@

#> # A tibble: 6 x 4 #> Id Body Name ParentId #> <chr> <chr> <chr> <chr> -#> 1 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… logo.png 0016A0000035… -#> 2 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… cloud.png 0016A0000035… -#> 3 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… old-logo… 0016A0000035… -#> 4 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… cloud.png 0016A0000035… -#> 5 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… logo.png 0016A0000035… -#> 6 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… old-logo… 0016A0000035…

+#> 1 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… cloud.png 0016A0000035… +#> 2 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… old-logo… 0016A0000035… +#> 3 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… logo.png 0016A0000035… +#> 4 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… logo.png 0016A0000035… +#> 5 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… old-logo… 0016A0000035… +#> 6 00P3s00000Yv… /services/data/v48.0/sobjects/Attachmen… cloud.png 0016A0000035…

Before downloading the attachments using the Body it is important to consider whether the attachment names are repeated or duplicates. If so, then the attachments with the same exact name will be overwritten on the local filesystem as they are downloaded. To avoid this problem there are two common strategies:

  1. Create a new column (e.g. unique_name) that is the concatenation of the Attachment Id and the Attachment’s name which is guaranteed to be unique.
  2. @@ -234,17 +234,17 @@

    queried_attachments$Name, queried_attachments$Path) download_result -#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvbJ1EAJ/Body +#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvpNYEAZ/Body #> TRUE -#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvbIwEAJ/Body +#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvpNdEAJ/Body #> TRUE -#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvbGjEAJ/Body +#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvfysEAB/Body #> TRUE -#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvbJ6EAJ/Body +#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvpNnEAJ/Body #> TRUE -#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvbJBEAZ/Body +#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvpNsEAJ/Body #> TRUE -#> /services/data/v48.0/sobjects/Attachment/00P3s00000Yvb9iEAB/Body +#> /services/data/v48.0/sobjects/Attachment/00P3s00000YvpNiEAJ/Body #> TRUE

    Uploading large batches using the Bulk API

    The SOAP and REST APIs are good for working with a few attachements at a time. However, the Bulk API can be envoked using api_type=“Bulk 1.0” to automatically take a data.frame or tbl_df of Attachment field data and create a ZIP file with CSV manifest that is required by that API to upload In the example above we downloaded the 3 attachments each belonging to 2 different parent records. Assuming that I have a directory on my computer

    @@ -257,12 +257,12 @@

    #> # A tibble: 6 x 4 #> Id Success Created Error #> <chr> <lgl> <lgl> <lgl> -#> 1 00P3s00000YvbJaEAJ TRUE TRUE NA -#> 2 00P3s00000YvbJbEAJ TRUE TRUE NA -#> 3 00P3s00000YvbJcEAJ TRUE TRUE NA -#> 4 00P3s00000YvbJdEAJ TRUE TRUE NA -#> 5 00P3s00000YvbJeEAJ TRUE TRUE NA -#> 6 00P3s00000YvbJfEAJ TRUE TRUE NA +#> 1 00P3s00000YvpNxEAJ TRUE TRUE NA +#> 2 00P3s00000YvpNyEAJ TRUE TRUE NA +#> 3 00P3s00000YvpNzEAJ TRUE TRUE NA +#> 4 00P3s00000YvpO0EAJ TRUE TRUE NA +#> 5 00P3s00000YvpO1EAJ TRUE TRUE NA +#> 6 00P3s00000YvpO2EAJ TRUE TRUE NA

    @@ -282,7 +282,7 @@

    #> # A tibble: 1 x 2 #> id success #> <chr> <lgl> -#> 1 0153s000001gWkuAAE TRUE

    +#> 1 0153s000001gWnKAAU TRUE

    With Documents, users are also able to save storage by specifying a Url instead of a a file path where the Body content is stored locally. Specifying the Url field will reference the URL instead of uploading into the Salesforce org, thereby saving space if limited in your organization.

    cheatsheet_url <- "https://rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf"
     document_details <- tibble(Name = "Data Wrangling Cheatsheet - Test 2",
    @@ -295,7 +295,7 @@ 

    #> # A tibble: 1 x 2 #> id success #> <chr> <lgl> -#> 1 0153s000001gWkzAAE TRUE

    +#> 1 0153s000001gWnPAAU TRUE +#> 1 0033s000012MKYNAA4 TRUE FALSE NA +#> 2 0033s000012MKYOAA4 TRUE FALSE NA

    @@ -238,16 +238,16 @@

    #> # A tibble: 10 x 4 #> Id Success Created Error #> <chr> <lgl> <lgl> <lgl> -#> 1 0033s000012MJQCAA4 TRUE TRUE NA -#> 2 0033s000012MJQDAA4 TRUE TRUE NA -#> 3 0033s000012MJQ2AAO TRUE TRUE NA -#> 4 0033s000012MJQ3AAO TRUE TRUE NA -#> 5 0033s000012MJQ7AAO TRUE TRUE NA -#> 6 0033s000012MJQ8AAO TRUE TRUE NA -#> 7 0033s000012MJQHAA4 TRUE TRUE NA -#> 8 0033s000012MJQIAA4 TRUE TRUE NA -#> 9 0033s000012MJPUAA4 TRUE TRUE NA -#> 10 0033s000012MJPVAA4 TRUE TRUE NA +#> 1 0033s000012MKYSAA4 TRUE TRUE NA +#> 2 0033s000012MKYTAA4 TRUE TRUE NA +#> 3 0033s000012MKYXAA4 TRUE TRUE NA +#> 4 0033s000012MKYYAA4 TRUE TRUE NA +#> 5 0033s000012MKYcAAO TRUE TRUE NA +#> 6 0033s000012MKYdAAO TRUE TRUE NA +#> 7 0033s000012MKYhAAO TRUE TRUE NA +#> 8 0033s000012MKYiAAO TRUE TRUE NA +#> 9 0033s000012MKYmAAO TRUE TRUE NA +#> 10 0033s000012MKYnAAO TRUE TRUE NA # query the records so we can compare the ordering of the Id field to the # original dataset @@ -263,16 +263,16 @@

    # same ordering of rows! cbind(created_records_v1 %>% select(Id), queried_records) #> Id Id test_number__c -#> 1 0033s000012MJQCAA4 0033s000012MJQ2AAO 1 -#> 2 0033s000012MJQDAA4 0033s000012MJQ3AAO 2 -#> 3 0033s000012MJQ2AAO 0033s000012MJQ7AAO 3 -#> 4 0033s000012MJQ3AAO 0033s000012MJQ8AAO 4 -#> 5 0033s000012MJQ7AAO 0033s000012MJQCAA4 5 -#> 6 0033s000012MJQ8AAO 0033s000012MJQDAA4 6 -#> 7 0033s000012MJQHAA4 0033s000012MJQHAA4 7 -#> 8 0033s000012MJQIAA4 0033s000012MJQIAA4 8 -#> 9 0033s000012MJPUAA4 0033s000012MJPUAA4 9 -#> 10 0033s000012MJPVAA4 0033s000012MJPVAA4 10

    +#> 1 0033s000012MKYSAA4 0033s000012MKYSAA4 1 +#> 2 0033s000012MKYTAA4 0033s000012MKYTAA4 2 +#> 3 0033s000012MKYXAA4 0033s000012MKYXAA4 3 +#> 4 0033s000012MKYYAA4 0033s000012MKYYAA4 4 +#> 5 0033s000012MKYcAAO 0033s000012MKYcAAO 5 +#> 6 0033s000012MKYdAAO 0033s000012MKYdAAO 6 +#> 7 0033s000012MKYhAAO 0033s000012MKYhAAO 7 +#> 8 0033s000012MKYiAAO 0033s000012MKYiAAO 8 +#> 9 0033s000012MKYmAAO 0033s000012MKYmAAO 9 +#> 10 0033s000012MKYnAAO 0033s000012MKYnAAO 10

    The Bulk 2.0 API returns every single field that was included in the call so if you have an identifying key your dataset, then it should not be a problem to join on that key with your original data to bring in the newly assigned Salesforce Id that is generated when the record is created in Salesforce. However, I have find it wasteful to transfer all of the field information back after the query and have not found a significant performance improvement between the Bulk 1.0 and Bulk 2.0.

    Bulk 2.0

    created_records_v2 <- sf_create(new_contacts, "Contact", api_type="Bulk 2.0", batch_size=2)
    @@ -281,42 +281,42 @@

    #> # A tibble: 10 x 6 #> sf__Id sf__Created FirstName LastName test_number__c sf__Error #> <chr> <lgl> <chr> <chr> <dbl> <chr> -#> 1 0033s000012MJQ… TRUE Test Contact-Creat… 1 <NA> -#> 2 0033s000012MJQ… TRUE Test Contact-Creat… 2 <NA> -#> 3 0033s000012MJQ… TRUE Test Contact-Creat… 3 <NA> -#> 4 0033s000012MJQ… TRUE Test Contact-Creat… 4 <NA> -#> 5 0033s000012MJQ… TRUE Test Contact-Creat… 5 <NA> -#> 6 0033s000012MJQ… TRUE Test Contact-Creat… 6 <NA> -#> 7 0033s000012MJQ… TRUE Test Contact-Creat… 7 <NA> -#> 8 0033s000012MJQ… TRUE Test Contact-Creat… 8 <NA> -#> 9 0033s000012MJQ… TRUE Test Contact-Creat… 9 <NA> -#> 10 0033s000012MJQ… TRUE Test Contact-Creat… 10 <NA> +#> 1 0033s000012MKY… TRUE Test Contact-Creat… 1 <NA> +#> 2 0033s000012MKY… TRUE Test Contact-Creat… 2 <NA> +#> 3 0033s000012MKY… TRUE Test Contact-Creat… 3 <NA> +#> 4 0033s000012MKY… TRUE Test Contact-Creat… 4 <NA> +#> 5 0033s000012MKY… TRUE Test Contact-Creat… 5 <NA> +#> 6 0033s000012MKY… TRUE Test Contact-Creat… 6 <NA> +#> 7 0033s000012MKY… TRUE Test Contact-Creat… 7 <NA> +#> 8 0033s000012MKY… TRUE Test Contact-Creat… 8 <NA> +#> 9 0033s000012MKY… TRUE Test Contact-Creat… 9 <NA> +#> 10 0033s000012MKZ… TRUE Test Contact-Creat… 10 <NA>

    For these above I typically prefer using the Bulk 1.0 API when creating or updating records. That way I can be confident in that the order of the records returned from the process matches the order of the original dataset I put into the process. All of this does not matter when deleting records, so if you want minor performance improvements then switch to the Bulk 2.0 when deleting records.

    sf_delete(c(created_records_v1$Id, created_records_v2$sf__Id),
               object_name = "Contact", api_type="Bulk 2.0")
     #> # A tibble: 20 x 4
     #>    sf__Id             sf__Created Id                 sf__Error
     #>    <chr>              <lgl>       <chr>              <chr>    
    -#>  1 0033s000012MJQCAA4 FALSE       0033s000012MJQCAA4 <NA>     
    -#>  2 0033s000012MJQDAA4 FALSE       0033s000012MJQDAA4 <NA>     
    -#>  3 0033s000012MJQ2AAO FALSE       0033s000012MJQ2AAO <NA>     
    -#>  4 0033s000012MJQ3AAO FALSE       0033s000012MJQ3AAO <NA>     
    -#>  5 0033s000012MJQ7AAO FALSE       0033s000012MJQ7AAO <NA>     
    -#>  6 0033s000012MJQ8AAO FALSE       0033s000012MJQ8AAO <NA>     
    -#>  7 0033s000012MJQHAA4 FALSE       0033s000012MJQHAA4 <NA>     
    -#>  8 0033s000012MJQIAA4 FALSE       0033s000012MJQIAA4 <NA>     
    -#>  9 0033s000012MJPUAA4 FALSE       0033s000012MJPUAA4 <NA>     
    -#> 10 0033s000012MJPVAA4 FALSE       0033s000012MJPVAA4 <NA>     
    -#> 11 0033s000012MJQRAA4 FALSE       0033s000012MJQRAA4 <NA>     
    -#> 12 0033s000012MJQSAA4 FALSE       0033s000012MJQSAA4 <NA>     
    -#> 13 0033s000012MJQTAA4 FALSE       0033s000012MJQTAA4 <NA>     
    -#> 14 0033s000012MJQUAA4 FALSE       0033s000012MJQUAA4 <NA>     
    -#> 15 0033s000012MJQVAA4 FALSE       0033s000012MJQVAA4 <NA>     
    -#> 16 0033s000012MJQWAA4 FALSE       0033s000012MJQWAA4 <NA>     
    -#> 17 0033s000012MJQXAA4 FALSE       0033s000012MJQXAA4 <NA>     
    -#> 18 0033s000012MJQYAA4 FALSE       0033s000012MJQYAA4 <NA>     
    -#> 19 0033s000012MJQZAA4 FALSE       0033s000012MJQZAA4 <NA>     
    -#> 20 0033s000012MJQaAAO FALSE       0033s000012MJQaAAO <NA>
    +#> 1 0033s000012MKYSAA4 FALSE 0033s000012MKYSAA4 <NA> +#> 2 0033s000012MKYTAA4 FALSE 0033s000012MKYTAA4 <NA> +#> 3 0033s000012MKYXAA4 FALSE 0033s000012MKYXAA4 <NA> +#> 4 0033s000012MKYYAA4 FALSE 0033s000012MKYYAA4 <NA> +#> 5 0033s000012MKYcAAO FALSE 0033s000012MKYcAAO <NA> +#> 6 0033s000012MKYdAAO FALSE 0033s000012MKYdAAO <NA> +#> 7 0033s000012MKYhAAO FALSE 0033s000012MKYhAAO <NA> +#> 8 0033s000012MKYiAAO FALSE 0033s000012MKYiAAO <NA> +#> 9 0033s000012MKYmAAO FALSE 0033s000012MKYmAAO <NA> +#> 10 0033s000012MKYnAAO FALSE 0033s000012MKYnAAO <NA> +#> 11 0033s000012MKYrAAO FALSE 0033s000012MKYrAAO <NA> +#> 12 0033s000012MKYsAAO FALSE 0033s000012MKYsAAO <NA> +#> 13 0033s000012MKYtAAO FALSE 0033s000012MKYtAAO <NA> +#> 14 0033s000012MKYuAAO FALSE 0033s000012MKYuAAO <NA> +#> 15 0033s000012MKYvAAO FALSE 0033s000012MKYvAAO <NA> +#> 16 0033s000012MKYwAAO FALSE 0033s000012MKYwAAO <NA> +#> 17 0033s000012MKYxAAO FALSE 0033s000012MKYxAAO <NA> +#> 18 0033s000012MKYyAAO FALSE 0033s000012MKYyAAO <NA> +#> 19 0033s000012MKYzAAO FALSE 0033s000012MKYzAAO <NA> +#> 20 0033s000012MKZ0AAO FALSE 0033s000012MKZ0AAO <NA> diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 7cbdbe1a..781759d8 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -8,7 +8,7 @@ articles: working-with-attachments: working-with-attachments.html working-with-metadata: working-with-metadata.html working-with-the-bulk-apis: working-with-the-bulk-apis.html -last_built: 2020-06-12T16:15Z +last_built: 2020-06-13T19:00Z urls: reference: https://stevenmmortimer.github.io/salesforcer/reference article: https://stevenmmortimer.github.io/salesforcer/articles