def unmerge_drive_sheet_cells(self, user_access_token, sheet_token, sheet_id, range): """拆分单元格 :type self: OpenLark :param user_access_token: user_access_token :type user_access_token: str :param sheet_token: 文件的 token 列表 :type sheet_token: str :param sheet_id: 作为表格唯一识别参数 :type sheet_id: str :param range: 范围,形如:'A1:D2' :type range: str :rtype: str 该接口用于根据 sheet_token 和维度信息合并单元格;单次操作不超过5000行,100列。 https://open.feishu.cn/document/ukTMukTMukTM/ukDNzUjL5QzM14SO0MTN """ url = self._gen_request_url( '/open-apis/sheet/v2/spreadsheets/{}/unmerge_cells'.format( sheet_token)) body = { 'range': join_range(sheet_id, range), } self._post(url, body=body, auth_token=user_access_token)
def append_write_drive_sheet_cells(self, user_access_token, sheet_token, sheet_id, range, values, overwrite_empty_line=False): """在表后面插入数据 :type self: OpenLark :param user_access_token: user_access_token :type user_access_token: str :param sheet_token: 文件的 token 列表 :type sheet_token: str :param sheet_id: 作为表格唯一识别参数 :type sheet_id: str :param range: 范围,形如:'A1:D2' :type range: str :param values: 数据,二位数组,每个子数组就是一行数据 :type values: list[list[Any]] :param overwrite_empty_line: 是否覆盖空行(第一个格子是空,就是空行)。 如果:覆盖 && range 的左上角第一个格子为空,则:从这个格子开始,数据被覆盖 如果:不覆盖 && range 的左上角第一个格子为空 && 其他数据不为空,则将将这些数据下移 N 格 再插入数据 :type overwrite_empty_line: bool :rtype: DriveInsertSheet 该接口用于根据 sheet_token 和 range 遇到空行则进行覆盖追加或新增行追加数据。 空行:默认该行第一个格子是空,则认为是空行;单次写入不超过5000行,100列,每个格子大小为0.5M。 https://open.feishu.cn/document/ukTMukTMukTM/uMjMzUjLzIzM14yMyMTN """ url = self._gen_request_url( '/open-apis/sheet/v2/spreadsheets/{}/values_append'.format( sheet_token)) if not overwrite_empty_line: url = url + '?insertDataOption=INSERT_ROWS' body = { 'valueRange': { 'range': join_range(sheet_id, range), 'values': values } } res = self._post(url, body=body, auth_token=user_access_token) return _pack_insert_sheet(sheet_token, sheet_id, res)
def set_drive_sheet_style(self, user_access_token, sheet_token, sheet_id, range, style=None, raw_style=None): """设置单元格样式 :type self: OpenLark :param user_access_token: user_access_token :type user_access_token: str :param sheet_token: 文件的 token 列表 :type sheet_token: str :param sheet_id: 作为表格唯一识别参数 :type sheet_id: str :type sheet_id: str :param range: 范围,形如:'A1:D2' :type range: str :param style: 单元格样式,具体请参考文档:https://open.feishu.cn/document/ukTMukTMukTM/ukjMzUjL5IzM14SOyMTN :type style: DriveSheetStyle :param raw_style: 单元格样式 的 原始样式 :type raw_style: Any 该接口用于根据 sheet_token 、range 和样式信息更新单元格样式;单次写入不超过5000行,100列。 https://open.feishu.cn/document/ukTMukTMukTM/ukjMzUjL5IzM14SOyMTN """ if not raw_style and style: raw_style = style.as_sheet_style() url = self._gen_request_url( '/open-apis/sheet/v2/spreadsheets/{}/style'.format(sheet_token)) body = { 'appendStyle': { 'range': join_range(sheet_id, range), 'style': raw_style } } self._put(url, body=body, auth_token=user_access_token)
def prepend_write_drive_sheet_cells(self, user_access_token, sheet_token, sheet_id, range, values): """在表前面插入数据 :type self: OpenLark :param user_access_token: user_access_token :type user_access_token: str :param sheet_token: 文件的 token 列表 :type sheet_token: str :param sheet_id: 作为表格唯一识别参数 :type sheet_id: str :param range: 范围,形如:'A1:D2' :type range: str :param values: 数据,二位数组,每个子数组就是一行数据 :type values: list[list[Any]] :rtype: DriveInsertSheet 该接口用于根据 sheet_token 和 range 向范围之前增加相应数据的行和相应的数据,相当于数组的插入操作; 单次写入不超过5000行,100列,每个格子大小为0.5M。 https://open.feishu.cn/document/ukTMukTMukTM/uIjMzUjLyIzM14iMyMTN """ url = self._gen_request_url( '/open-apis/sheet/v2/spreadsheets/{}/values_prepend'.format( sheet_token)) body = { 'valueRange': { 'range': join_range(sheet_id, range), 'values': [[ i.as_sheet_dict() if hasattr(i, 'as_sheet_dict') else i for i in value ] for value in values] } } res = self._post(url, body=body, auth_token=user_access_token) return _pack_insert_sheet(sheet_token, sheet_id, res)
def write_drive_sheet_cells(self, user_access_token, sheet_token, sheet_id, range, values): """写入单元格 :type self: OpenLark :param user_access_token: user_access_token :type user_access_token: str :param sheet_token: 文件的 token 列表 :type sheet_token: str :param sheet_id: 作为表格唯一识别参数 :type sheet_id: str :param range: 范围,形如:'A1:D2' :type range: str :param values: 数据,二位数组,每个子数组就是一行数据 :type values: list[list[Any]] :rtype: (int, list[list[Any]]) :return: 版本,值的二维数组 该接口用于根据 sheet_token 和 range 向单个范围写入数据,若范围内有数据,将被更新覆盖; 单次写入不超过5000行,100列,每个格子大小为0.5M。 https://open.feishu.cn/document/ukTMukTMukTM/uAjMzUjLwIzM14CMyMTN """ url = self._gen_request_url( '/open-apis/sheet/v2/spreadsheets/{}/values'.format(sheet_token)) body = { 'valueRange': { 'range': join_range(sheet_id, range), 'values': [[ i.as_sheet_dict() if hasattr(i, 'as_sheet_dict') else i for i in value ] for value in values] } } self._put(url, body=body, auth_token=user_access_token)
def read_drive_sheet_cells(self, user_access_token, sheet_token, sheet_id, range, to_str=False): """读取单元格 :type self: OpenLark :param user_access_token: user_access_token :type user_access_token: str :param sheet_token: 文件的 token 列表 :type sheet_token: str :param sheet_id: 作为表格唯一识别参数 :type sheet_id: str :param range: 范围,形如:'A1:D2' :type range: str :param to_str: 是否返回 to_str 后的值 :type to_str: bool :rtype: (int, list[list[Any]]) :return: 版本,值的二维数组 该接口用于根据 sheet_token 和 range 读取表格单个范围的值,返回数据限制为10M。 https://open.feishu.cn/document/ukTMukTMukTM/ugTMzUjL4EzM14COxMTN """ url = self._gen_request_url( '/open-apis/sheet/v2/spreadsheets/{}/values/{}'.format( sheet_token, join_range(sheet_id, range))) if to_str: url = url + '?valueRenderOption=ToString' res = self._get(url, auth_token=user_access_token) revision = res['data']['revision'] # type: int values = res['data']['valueRange'].get('values', []) # type: List[List[Any]] return revision, values