139 lines
5.1 KiB
OCaml
139 lines
5.1 KiB
OCaml
module Dict : sig
|
|
type 'a t = (string * 'a) list
|
|
val t_to_js: ('a -> Ojs.t) -> 'a t -> Ojs.t
|
|
val t_of_js: (Ojs.t -> 'a) -> Ojs.t -> 'a t
|
|
end = struct
|
|
type 'a t = (string * 'a) list
|
|
|
|
let t_to_js ml2js l =
|
|
let o = Ojs.empty_obj () in
|
|
List.iter (fun (k, v) -> Ojs.set o k (ml2js v)) l;
|
|
o
|
|
|
|
let t_of_js js2ml o =
|
|
let l = ref [] in
|
|
Ojs.iter_properties o
|
|
(fun k -> l := (k, js2ml (Ojs.get o k)) :: !l);
|
|
!l
|
|
end
|
|
|
|
|
|
include ([%js] : sig
|
|
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"]
|
|
val get_day: t -> int [@@js.call] (* day of the week (0-6) *)
|
|
val get_full_year: t -> int [@@js.call] (* year (4 digits for 4-digit years) *)
|
|
val get_month: t -> int [@@js.call] (* month (0-11) *)
|
|
val get_date: t -> int [@@js.call] (* day of the month (1-31) *)
|
|
val get_hours: t -> int [@@js.call] (* hour (0-23) *)
|
|
val get_minutes: t -> int [@@js.call] (* minutes (0-59) *)
|
|
val get_seconds: t -> int [@@js.call] (* seconds (0-59) *)
|
|
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]
|
|
end
|
|
|
|
module File : sig
|
|
type t
|
|
val t_of_js: Ojs.t -> t
|
|
val get_id: t -> string [@@js.call]
|
|
val get_name: t -> string [@@js.call]
|
|
val get_size: t -> int [@@js.call]
|
|
end
|
|
|
|
module FileIterator : sig
|
|
type t
|
|
val get_files: unit -> t [@@js.global "DriveApp.getFiles"]
|
|
val t_of_js: Ojs.t -> t
|
|
val has_next: t -> bool [@@js.call]
|
|
val next: t -> File.t [@@js.call]
|
|
end
|
|
|
|
|
|
val log: string -> unit [@@js.global "Logger.log"]
|
|
|
|
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_value: t -> Ojs.t -> t [@@js.call]
|
|
end
|
|
|
|
module NamedRange: sig
|
|
type t
|
|
val get_name: t -> string [@@js.call]
|
|
val get_range: t -> Range.t [@@js.call]
|
|
end
|
|
|
|
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]
|
|
val get_named_ranges: t -> NamedRange.t list [@@js.call]
|
|
end
|
|
|
|
module EmailField : sig
|
|
type t
|
|
val get_address: t -> string [@@js.call]
|
|
end
|
|
|
|
module PhoneField : sig
|
|
type t
|
|
module Field : sig
|
|
type t =
|
|
| Work [@js "ContactsApp.Field.WORK_PHONE"]
|
|
| Mobile [@js "ContactsApp.Field.MOBILE_PHONE"]
|
|
| Home [@js "ContactsApp.Field.HOME_PHONE"]
|
|
[@@js.enum]
|
|
end
|
|
val get_phone_number: t -> string [@@js.call]
|
|
end
|
|
|
|
module Contacts : sig
|
|
type t
|
|
val get_contacts: unit -> t list [@@js.global "ContactsApp.getContacts"]
|
|
|
|
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_emails: t -> EmailField.t list [@@js.call]
|
|
val get_phones: t -> PhoneField.t list [@@js.call]
|
|
val add_phone: t -> PhoneField.Field.t -> string -> PhoneField.t [@@js.call]
|
|
|
|
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_contact_groups: t -> Group.g list
|
|
end
|
|
|
|
|
|
module GmailApp : sig
|
|
type t
|
|
val i : t [@@js.global "GmailApp"]
|
|
val send_email: t -> address:string -> subject:string -> content:string -> unit [@@js.call]
|
|
end
|
|
|
|
end)
|