Summary
When querying using name contains option, if the prefix ends with '1' it fails for all words above 19 characters.
Escaping the "\1" somehow fixes it (why though)
Excluding it by cutting the prefix short: works.
Using the full file name: works
Expected Behavior
- Get a list of files that have the prefix
Actual Behavior
Steps to Reproduce the Problem
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
import io
scoped_creds = Credentials.from_service_account_info(creds, scopes=SCOPES)
gdrive = build("drive", "v3", credentials=scoped_creds)
parent_id = ""
data = io.BytesIO()
file_metadata = {
"name": "thistwentyletterword_20230122",
# "mimeType": "application/vnd.google-apps.spreadsheet",
"parents": ["parent_id"]
}
media = MediaIoBaseUpload(data, mimetype="text/csv", resumable=True)
# pylint: disable=maybe-no-member
print(
gdrive.files()
.create(
supportsAllDrives=True, body=file_metadata, media_body=media, fields="id"
)
.execute()
)
# -> {'id': 'long_generated_file_id'}
# search for file with 'thistwentyletterword_202301'
# adding more characters after the '1' fails as well as long as it's not the full file name.
print(
gdrive.files()
.list(
spaces="drive",
q=f"""\
mimeType != 'application/vnd.google-apps.folder'\
and name contains 'thistwentyletterword_202301'\
and trashed=false
""",
fields="files(id, name, mimeType)",
)
.execute()
.get("files")
)
# out-> []
# Escape the "\1"
print(
gdrive.files()
.list(
spaces="drive",
q=f"""\
mimeType != 'application/vnd.google-apps.folder'\
and name contains 'thistwentyletterword_20230\1'\
and trashed=false
""",
fields="files(id, name, mimeType)",
)
.execute()
.get("files")
)
# out-> [{'mimeType': 'text/csv', 'id': 'long_generated_file_id', 'name': 'thistwentyletterword_20230122'}]
Specifications
- Python version (python --3.10.7)
- OS (Mac/Linux/Windows)
Reactions are currently unavailable
Summary
When querying using name contains option, if the prefix ends with '1' it fails for all words above 19 characters.
Escaping the "\1" somehow fixes it (why though)
Excluding it by cutting the prefix short: works.
Using the full file name: works
Expected Behavior
Actual Behavior
Steps to Reproduce the Problem
from google.oauth2.service_account import Credentials from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload import io scoped_creds = Credentials.from_service_account_info(creds, scopes=SCOPES) gdrive = build("drive", "v3", credentials=scoped_creds) parent_id = "" data = io.BytesIO() file_metadata = { "name": "thistwentyletterword_20230122", # "mimeType": "application/vnd.google-apps.spreadsheet", "parents": ["parent_id"] } media = MediaIoBaseUpload(data, mimetype="text/csv", resumable=True) # pylint: disable=maybe-no-member print( gdrive.files() .create( supportsAllDrives=True, body=file_metadata, media_body=media, fields="id" ) .execute() ) # -> {'id': 'long_generated_file_id'} # search for file with 'thistwentyletterword_202301' # adding more characters after the '1' fails as well as long as it's not the full file name. print( gdrive.files() .list( spaces="drive", q=f"""\ mimeType != 'application/vnd.google-apps.folder'\ and name contains 'thistwentyletterword_202301'\ and trashed=false """, fields="files(id, name, mimeType)", ) .execute() .get("files") ) # out-> [] # Escape the "\1" print( gdrive.files() .list( spaces="drive", q=f"""\ mimeType != 'application/vnd.google-apps.folder'\ and name contains 'thistwentyletterword_20230\1'\ and trashed=false """, fields="files(id, name, mimeType)", ) .execute() .get("files") ) # out-> [{'mimeType': 'text/csv', 'id': 'long_generated_file_id', 'name': 'thistwentyletterword_20230122'}]Specifications