I believe your goal is as follows.
You want to export a Google Spreadsheet as a PDF file.
When the Spreadsheet is converted to a PDF format, you want to inglude the following settings.
size=6.29921x23.2283
portrait=true
fitw=true&source=labnol
sheetnames=false&printtitle=false
pagenumbers=false&gridlines=false
- I guessed that the unit of
6.29921x23.2283
is inch.
You are using googleapis for python. And credentials
of serivices = build('drive', 'v3', credentials=credentials)
can be used for downloading the Spreadsheet in PDF format.
In this case, how about the following sample script? In this case, the access token is retrieved from your credentials
. And, the endpoint is requested with the requests module.
Sample script:
serivices = build('drive', 'v3', credentials=credentials) # This is from your script.
# If your "creds" is from the service account, please enable the following line. If your "creds" is from OAuth2, please disable the following line.
# credentials.refresh(google.auth.transport.requests.Request())
accessToken = credentials.token
outputFilename = "sample.pdf" # Please set the output filename.
spreadsheetId = "###" # Please set your Spreadsheet ID.
q = {
'format': 'pdf',
'size': '6.29921x23.2283',
'portrait': 'true',
'fitw': 'true',
'source': 'labnol',
'sheetnames': 'false',
'printtitle': 'false',
'pagenumbers': 'false', # or 'pagenum': 'UNDEFINED',
'gridlines': 'false'
}
queryParameters = urllib.parse.urlencode(q)
url = f'https://docs.google.com/spreadsheets/d/{spreadsheetId}/export?{queryParameters}'
headers = {'Authorization': 'Bearer ' + accessToken}
res = requests.get(url, headers=headers)
with open(outputFilename, 'wb') as f:
f.write(res.content)
Please add the following import.
import urllib.parse
import requests
When this script is run, the Google Spreadsheet is exported as a PDF format by customizing with the values of q
.
About the comment line of # credentials.refresh(google.auth.transport.requests.Request())
, unfortunately, from your question, I couldn't know which you are using the OAuth2 or the service account. So, I proposed a script for both patterns. When this line is put as a comment, it is for the OAuth2. When this line is put as a script by removing #
, it is for the service account. Please be careful about this.
References: