I am new to Google Calendar API. I created function to add events to the Google calendar using Google Apps Script. This works well. But I want to execute the Google Apps Script from C# application.
How to do that?
I am new to Google Calendar API. I created function to add events to the Google calendar using Google Apps Script. This works well. But I want to execute the Google Apps Script from C# application.
How to do that?
This is now possible thanks to the Execution API, which allows you to publish Google apps script functions for secure authenticated execution from C#.
The .NET Quickstart gives an example of running a Script called getFoldersUnderRoot()
.
Here the full server google appscript Public Anyone
public class SheetServer
{
public string ScriptUrl { get; private set; }
public SheetServer(string script)
{
this.ScriptUrl = script;
}
public async Task<string> GetStringAsync(string scriptUrl = null)
{
if (scriptUrl == null)
{
scriptUrl = ScriptUrl;
}
string jsonString = null;
using (var httpClient = new System.Net.Http.HttpClient())
{
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
var stream = await httpClient.GetStreamAsync(scriptUrl);
StreamReader reader = new StreamReader(stream);
jsonString = reader.ReadToEnd();
}
return jsonString;
}
public async Task<string> GetStringQueryAsync(string queryName, string queryString, string scriptUrl = null)
{
if (scriptUrl == null)
{
scriptUrl = ScriptUrl;
}
string jsonString = null;
using (var httpClient = new System.Net.Http.HttpClient())
{
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
var query_Url = CreateQueryString(queryName, queryString, scriptUrl);
var response = await httpClient.GetAsync(query_Url);
jsonString = await response.Content.ReadAsStringAsync();
}
return jsonString;
}
public async Task<string> PostJsonAsync(string json, string scriptUrl = null)
{
string result = "";
if (scriptUrl == null)
{
scriptUrl = ScriptUrl;
}
var data = new StringContent(json, Encoding.UTF8, "application/json");
using (var httpClient = new System.Net.Http.HttpClient())
{
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
var response = await httpClient.PostAsync(scriptUrl, data);
result = await response.Content.ReadAsStringAsync();
Debug.WriteLine("---------------------------------------------");
Debug.WriteLine(result);
}
return result;
}
public async Task<string> PostParametersAsync(string name, string value, string scriptUrl = null)
{
string result = "";
if (scriptUrl == null)
{
scriptUrl = ScriptUrl;
}
var values = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>(name, value)
};
FormUrlEncodedContent requestContent = new FormUrlEncodedContent(values);
using (var httpClient = new System.Net.Http.HttpClient())
{
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
var response = await httpClient.PostAsync(scriptUrl, requestContent);
result = await response.Content.ReadAsStringAsync();
Debug.WriteLine("---------------------------------------------");
Debug.WriteLine(result);
}
return result;
}
public async Task<string> PostParametersAsync(List<KeyValuePair<string, string>> values, string scriptUrl = null)
{
string result = "";
if (scriptUrl == null)
{
scriptUrl = ScriptUrl;
}
FormUrlEncodedContent requestContent = new FormUrlEncodedContent(values);
using (var httpClient = new System.Net.Http.HttpClient())
{
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
var response = await httpClient.PostAsync(scriptUrl, requestContent);
result = await response.Content.ReadAsStringAsync();
Debug.WriteLine("---------------------------------------------");
Debug.WriteLine(result);
}
return result;
}
public async Task<string> PostQueryAsync(string queryName, string queryValue, List<KeyValuePair<string, string>> values, string scriptUrl = null)
{
if (scriptUrl == null)
{
scriptUrl = ScriptUrl;
}
string result = "";
using (var httpClient = new System.Net.Http.HttpClient())
{
// Create HttpClient
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
httpClient.BaseAddress = new Uri(scriptUrl);
//query string builder
string url_query = CreateQueryString(queryName, queryValue, scriptUrl);
//content
FormUrlEncodedContent requestContent = new FormUrlEncodedContent(values);
var response = await httpClient.PostAsync(url_query, requestContent);
result = await response.Content.ReadAsStringAsync();
Debug.WriteLine("---------------------------------------------");
Debug.WriteLine(result);
}
return result;
}
public string CreateQueryString(string queryName, string queryString, string requestUri )
{
var builder = new UriBuilder(requestUri);
builder.Port = -1;
var query = HttpUtility.ParseQueryString(builder.Query);
query[queryName] = queryString;
builder.Query = query.ToString();
string url_query = builder.ToString();
return url_query;
}
}