(** 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] val clear_content: 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 spreadsheet val open_spreadsheet : File.t -> spreadsheet [@@js.global "SpreadsheetApp.open"] type t val get_sheet_by_name : spreadsheet -> name:string -> t [@@js.call] 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"] (* Hides the column at the given index. *) val hide_column: t -> index:int -> unit [@@js.call "hideColumns"] (* Show the colummn at the given index. *) val show_column: t -> index:int -> unit [@@js.call "showColumns"] val show_columns: t -> from:int -> num:int -> unit [@@js.call "showColumns"] 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 refresh : t -> t [@@js.call] val is_unread : t -> bool [@@js.call] val is_starred : t -> bool [@@js.call] val star : t -> t [@@js.call] val unstar : t -> t [@@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