274 lines
8.5 KiB
OCaml
274 lines
8.5 KiB
OCaml
(** OCaml binding for Google Apps (https://developers.google.com/apps-script/) *)
|
|
|
|
val log : string -> unit [@@js.global "Logger.log"]
|
|
|
|
(** Standard JavaScript Date *)
|
|
module Date :
|
|
sig
|
|
type t
|
|
val t_of_js : Ojs.t -> t
|
|
val t_to_js : t -> Ojs.t
|
|
val now : unit -> t [@@js.new "Date"]
|
|
|
|
(** @return day of the week (0-6) *)
|
|
val get_day : t -> int [@@js.call]
|
|
|
|
(** @return year (4 digits) *)
|
|
val get_full_year : t -> int [@@js.call]
|
|
|
|
(** @return month (0-11) *)
|
|
val get_month : t -> int [@@js.call]
|
|
|
|
(** @return day of the month (1-31) *)
|
|
val get_date : t -> int [@@js.call]
|
|
|
|
(** @return hour (0-23) *)
|
|
val get_hours : t -> int [@@js.call]
|
|
|
|
(** @return minutes (0-59) *)
|
|
val get_minutes : t -> int [@@js.call]
|
|
|
|
(** @return seconds (0-59) *)
|
|
val get_seconds : t -> int [@@js.call]
|
|
|
|
val to_date_string : t -> string [@@js.call]
|
|
|
|
val to_ISO_string : t -> string [@@js.call]
|
|
|
|
val to_locale_date_string : t -> string [@@js.call]
|
|
|
|
val to_string : t -> string [@@js.call]
|
|
|
|
val set_date : t -> date:int -> unit [@@js.call]
|
|
val set_month : t -> month:int -> unit [@@js.call]
|
|
val set_full_year: t -> year:int -> unit [@@js.call]
|
|
end
|
|
|
|
(** Files in Google Drive. *)
|
|
module File :
|
|
sig
|
|
|
|
type folder
|
|
val get_folder_by_id: string -> folder [@@js.global "DriveApp.getFolderById"]
|
|
|
|
type t
|
|
val t_of_js : Ojs.t -> t
|
|
val get_file_by_id : string -> t [@@js.global "DriveApp.getFileById"]
|
|
val get_id : t -> string [@@js.call]
|
|
val get_name : t -> string [@@js.call]
|
|
val get_size : t -> int [@@js.call]
|
|
|
|
|
|
val make_copy: t -> name:string -> folder:folder -> t [@@js.call]
|
|
val set_content: t -> content:string -> t [@@js.call]
|
|
|
|
(** An iterator that allows scripts to iterate over a potentially
|
|
large collection of {!File.t}.*)
|
|
type iterator
|
|
|
|
(** @return a {!FileIterator.t} for all files of the drive *)
|
|
val get_files : unit -> iterator [@@js.global "DriveApp.getFiles"]
|
|
val has_next : iterator -> bool [@@js.call]
|
|
val next : iterator -> t [@@js.call]
|
|
|
|
type blob
|
|
val blob_to_js: blob -> Ojs.t
|
|
val new_blob : string -> blob [@@js.global "Utilities.newBlob"]
|
|
val get_blob: t -> blob [@@js.call]
|
|
val copy_blob : blob -> blob [@@js.call]
|
|
val get_blob_data_as_string : blob -> string [@@js.call "getDataAsString"]
|
|
|
|
val set_blob_data_from_string : blob -> data:string -> blob [@@js.call "setDataFromString"]
|
|
val set_blob_name: blob -> name:string -> blob [@@js.call "setName"]
|
|
val set_blob_content_type: blob -> content_type:string -> blob [@@js.call "setContentType"]
|
|
end
|
|
|
|
(** spreadsheet ranges *)
|
|
module Range :
|
|
sig
|
|
type t
|
|
val get_a1_notation : t -> string [@@js.call]
|
|
val get_background : t -> string [@@js.call]
|
|
val get_row : t -> int [@@js.call]
|
|
val get_last_row : t -> int [@@js.call]
|
|
val get_column : t -> int [@@js.call]
|
|
val get_last_column : t -> int [@@js.call]
|
|
val get_num_columns : t -> int [@@js.call]
|
|
val get_num_rows : t -> int [@@js.call]
|
|
val get_values : t -> Ojs.t array array [@@js.call]
|
|
val get_formulas : t -> string array array [@@js.call]
|
|
val get_display_values : t -> string array array [@@js.call]
|
|
|
|
val set_background: t -> background:string -> t [@@js.call]
|
|
val set_value : t -> new_val:Ojs.t -> t [@@js.call "setValue"]
|
|
val set_values: t -> new_vals:Ojs.t array array -> t [@@js.call "setValues"]
|
|
val offset: t -> row_offset:int -> column_offset:int
|
|
-> num_rows:int -> num_columns:int -> t [@@js.call]
|
|
|
|
(** Returns a given cell within a range. *)
|
|
val get_cell : t -> row:int -> column:int -> t [@@js.call]
|
|
val set_border: t -> top:bool -> left:bool -> bottom:bool -> right:bool
|
|
-> vertical:bool -> horizontal:bool -> t [@@js.call]
|
|
|
|
(** 'left', 'center' or 'right' *)
|
|
val set_horizontal_alignment: t-> align:string -> t [@@js.call]
|
|
|
|
(** 'top', 'middle' or 'bottom'e *)
|
|
val set_vertical_alignment: t -> align:string-> t [@@js.call]
|
|
val set_number_format : t -> format:string -> t [@@js.call]
|
|
val clear_format: t -> t [@@js.call]
|
|
end
|
|
|
|
module SandboxMode : sig
|
|
type t
|
|
val iframe : t [@@js.global "HtmlService.SandboxMode.IFRAME"]
|
|
end
|
|
|
|
module HtmlOutput :
|
|
sig
|
|
type t
|
|
val create_html_output_from_file : string -> t
|
|
[@@js.global "HtmlService.createHtmlOutputFromFile"]
|
|
val set_sandbox_mode : t -> mode:SandboxMode.t -> t [@@js.call]
|
|
val set_title : t -> title:string -> t [@@js.call]
|
|
end
|
|
|
|
module Menu :
|
|
sig
|
|
type t
|
|
val add_to_ui : t -> unit [@@js.call]
|
|
val add_separator : t -> t [@@js.call]
|
|
val add_item : t -> caption:string -> function_name:string -> t [@@js.call]
|
|
val add_sub_menu : t -> submenu:t -> t [@@js.call]
|
|
end
|
|
|
|
(** Access and modify spreadsheet sheets. *)
|
|
module Sheet :
|
|
sig
|
|
type t
|
|
val get_active_sheet : unit -> t [@@js.global "SpreadsheetApp.getActiveSheet"]
|
|
val get_last_row : t -> int [@@js.call]
|
|
val get_last_column : t -> int [@@js.call]
|
|
|
|
val get_sheet_values : t -> start_row:int -> start_column:int ->
|
|
num_rows:int -> num_columns:int -> Ojs.t array array
|
|
[@@js.call]
|
|
val get_range : t -> start_row:int ->
|
|
start_column:int -> num_rows:int -> num_columns:int -> Range.t
|
|
[@@js.call]
|
|
|
|
val get_data_range : t -> Range.t [@@js.call]
|
|
val get_name : t -> string [@@js.call]
|
|
|
|
(* Insert a blank row at the specified index *)
|
|
val insert_row: t-> index:int -> t [@@js.call "insertRows"]
|
|
|
|
(* Hides the row at the given index. *)
|
|
val hide_row: t -> index:int -> unit [@@js.call "hideRows"]
|
|
|
|
(* Shows the row at the given index. *)
|
|
val show_row: t -> index:int -> unit [@@js.call "showRows"]
|
|
|
|
type ui
|
|
type menu
|
|
val get_ui: unit -> ui [@@js.global "SpreadsheetApp.getUi"]
|
|
|
|
val show_sidebar : ui -> html:HtmlOutput.t -> unit [@@js.call]
|
|
|
|
val create_menu : ui -> caption:string -> Menu.t [@@js.call]
|
|
|
|
val alert : ui -> msg:string -> unit [@@js.call]
|
|
end
|
|
|
|
(** An email field in a {!Contact.t}. *)
|
|
module EmailField :
|
|
sig
|
|
type t
|
|
val get_address : t -> string [@@js.call]
|
|
end
|
|
|
|
(** An email field in a {!Contact.t}. *)
|
|
module PhoneField :
|
|
sig
|
|
type t
|
|
module Field : sig
|
|
type t
|
|
val work : t [@@js.global "ContactsApp.Field.WORK_PHONE"]
|
|
val mobile : t [@@js.global "ContactsApp.Field.MOBILE_PHONE"]
|
|
val home : t [@@js.global "ContactsApp.Field.HOME_PHONE"]
|
|
end
|
|
val get_phone_number : t -> string [@@js.call]
|
|
end
|
|
|
|
(** A {!Contact.t} contains the name, address, and various contact details of a contact.*)
|
|
module Contacts :
|
|
sig
|
|
type t
|
|
|
|
(** A {!Group.t} is is a group of contacts. *)
|
|
module Group :
|
|
sig
|
|
type g
|
|
val get_contact_group : string -> g [@@js.global "ContactsApp.getContactGroup"]
|
|
val get_contacts : g -> t list [@@js.call]
|
|
end
|
|
|
|
val get_contacts : unit -> t list [@@js.global "ContactsApp.getContacts"]
|
|
|
|
(** Create a contact *)
|
|
val create: given_name:string -> family_name:string -> email:string -> t
|
|
[@@js.global "ContactsApp.createContact"]
|
|
|
|
val get_emails : t -> EmailField.t list [@@js.call]
|
|
val get_family_name : t -> string [@@js.call]
|
|
val get_given_name : t -> string [@@js.call]
|
|
val get_full_name : t -> string [@@js.call]
|
|
val get_phones : t -> PhoneField.t list [@@js.call]
|
|
val get_contact_groups : t -> Group.g list [@@js.call]
|
|
|
|
val add_phone : t -> field:PhoneField.Field.t -> number:string -> PhoneField.t
|
|
[@@js.call]
|
|
|
|
(** Adds a {!Contact.t} to a {!Group.t} *)
|
|
val add_to_group: t -> group:Group.g -> t
|
|
[@@js.call]
|
|
end
|
|
|
|
module GmailMessage :
|
|
sig
|
|
type t
|
|
type thread
|
|
type label
|
|
|
|
val get_message_by_id: string -> t [@@js.global "GmailApp.getMessageById"]
|
|
val get_body : t -> string [@@js.call]
|
|
val get_subject : t -> string [@@js.call]
|
|
val get_from : t -> string [@@js.call]
|
|
val get_id : t -> string [@@js.call]
|
|
val mark_read : t -> t [@@js.call]
|
|
val mark_unread : t -> t [@@js.call]
|
|
val is_unread : t -> bool [@@js.call]
|
|
|
|
val get_thread : t -> thread [@@js.call]
|
|
val get_messages : thread -> t list [@@js.call]
|
|
val move_to_archive : thread -> thread [@@js.call]
|
|
val search_thread : string -> thread list [@@js.global "GmailApp.search"]
|
|
|
|
val get_user_label_by_name : string -> label [@@js.global "GmailApp.getUserLabelByName"]
|
|
|
|
val add_label_to_thread: label -> thread:thread -> label
|
|
[@@js.call "addToThread"]
|
|
|
|
val add_label: thread -> label:label -> thread
|
|
[@@js.call]
|
|
|
|
val remove_label: thread -> label:label -> thread
|
|
[@@js.call]
|
|
|
|
val send_email : recipient:string -> subject:string -> body:string -> unit [@@js.global "GmailApp.sendEmail"]
|
|
val send_email_with_options : recipient:string -> subject:string -> body:string -> Ojs.t -> unit [@@js.global "GmailApp.sendEmail"]
|
|
end
|
|
|
|
|
|
|