Google இயக்கக கோப்பு பதிவேற்றத்திற்கான VBA அங்கீகரிக்கப்படாத பிழையை சமாளித்தல்
எக்செல் இல் பணிகளை தானியங்குபடுத்தும் போது, கோப்புகளைப் பதிவேற்ற Google இயக்ககத்துடன் ஒருங்கிணைத்தால் உற்பத்தித்திறனை பெரிதும் மேம்படுத்தலாம். இருப்பினும், பயனர்கள் இந்த நோக்கத்திற்காக VBA ஐப் பயன்படுத்த முயற்சிக்கும்போது அடிக்கடி சிக்கல்களை எதிர்கொள்கின்றனர், குறிப்பாக பதிவேற்றச் செயல்பாட்டின் போது "அங்கீகரிக்கப்படாத" பிழையைப் பெறுகின்றனர்.
தவறான அங்கீகார டோக்கன்கள் அல்லது API கோரிக்கையின் தவறான உள்ளமைவு காரணமாக இந்தச் சிக்கல் பொதுவாக எழுகிறது. சரியாக கவனிக்கப்படாவிட்டால், "அங்கீகரிக்கப்படாத" பிழையானது உங்கள் உள்ளூர் அமைப்பிலிருந்து Google இயக்ககத்தில் கோப்புகளை வெற்றிகரமாக பதிவேற்றுவதைத் தடுக்கலாம்.
சரியான தலைப்புகள், டோக்கன்கள் மற்றும் கோப்பு வடிவமைத்தல் போன்ற API இடைவினைகளின் நுணுக்கங்களைப் புரிந்துகொள்வது இந்தப் பிழைகளைத் தீர்ப்பதற்கு அவசியம். உங்கள் VBA குறியீட்டின் சில பகுதிகளைச் சரிசெய்து, சரியான API அமைப்பை உறுதிசெய்வதன் மூலம், நீங்கள் பிழையைத் தீர்த்து, உங்கள் பணியை திறம்பட முடிக்கலாம்.
இந்த வழிகாட்டியில், அங்கீகரிக்கப்படாத பிழைக்கான காரணத்தையும், உங்கள் குறியீட்டை எவ்வாறு சரிசெய்வது என்பதையும் நாங்கள் உங்களுக்குக் கூறுவோம், இதன் மூலம் VBAஐப் பயன்படுத்தி Google இயக்ககத்தில் கோப்புகளை தடையின்றி பதிவேற்றலாம். இந்த சிக்கலை சரிசெய்வதற்கும் தீர்ப்பதற்கும் படிப்படியான அணுகுமுறையுடன் தொடங்குவோம்.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
MSXML2.ServerXMLHTTP60 | VBA இலிருந்து HTTP கோரிக்கைகளை அனுப்ப இந்த பொருள் பயன்படுத்தப்படுகிறது. இது சர்வர் பக்க HTTP கோரிக்கைகளை அனுமதிக்கிறது, இது Google Drive API உடன் தொடர்பு கொள்ளும்போது முக்கியமானது. இந்த சூழலில், கோப்புகளைப் பதிவேற்றுவதற்கான POST கோரிக்கையை இது கையாளுகிறது. |
setRequestHeader | கோரிக்கையில் HTTP தலைப்புகளை அமைக்கப் பயன்படுகிறது. ஸ்கிரிப்ட்டில், அனுப்பப்படும் உள்ளடக்கத்தின் வகையைக் குறிப்பிடுவது அவசியம் (அங்கீகார டோக்கன்கள் மற்றும் மல்டிபார்ட் உள்ளடக்கம் போன்றவை). உள்வரும் தரவை எவ்வாறு கையாள்வது என்பதை Google இன் API அறிந்திருப்பதை இது உறுதி செய்கிறது. |
ADODB.Stream | VBA இல் பைனரி கோப்பு செயல்பாடுகளை கையாள பயன்படும் ஒரு COM பொருள். பைனரி பயன்முறையில் கோப்பைப் படிக்க இது ஸ்கிரிப்டை அனுமதிக்கிறது, இது API க்கு மூலத் தரவாகப் பதிவேற்றுவதற்கு அவசியமாகும். இந்த முறையானது உள்ளடக்கத்தை ஸ்ட்ரீமிங் செய்வதன் மூலம் பெரிய கோப்புகளை திறமையாக கையாளுகிறது. |
MediaFileUpload | இது கூகுள் ஏபிஐ கிளையண்டிலிருந்து பைதான்-குறிப்பிட்ட கட்டளை, கூகுள் டிரைவில் கோப்புகளைப் பதிவேற்றப் பயன்படுகிறது. இது கோப்பின் பைனரி உள்ளடக்கத்தையும் அதன் மெட்டாடேட்டாவையும் கையாளுகிறது, PDFகள் அல்லது படங்கள் போன்ற பல்வேறு வடிவங்களில் கோப்புகளை அனுப்புவதை எளிதாக்குகிறது. |
service_account.Credentials | சேவைக் கணக்கைப் பயன்படுத்தி API கோரிக்கைகளை அங்கீகரிக்க பைத்தானில் பயன்படுத்தப்படுகிறது. கைமுறையான OAuth ஒப்புதலின் தேவையைத் தவிர்த்து, பயனர் தொடர்பு இல்லாமல் Google இயக்ககத்திற்கு அங்கீகரிக்கப்பட்ட அணுகலைப் பெற இந்தக் கட்டளை முக்கியமானது. |
.send | தயாரிக்கப்பட்ட HTTP கோரிக்கையை சேவையகத்திற்கு அனுப்புகிறது. இந்த VBA குறியீட்டில், கோப்பின் மெட்டாடேட்டா மற்றும் அதன் பைனரி உள்ளடக்கம் இரண்டையும் கொண்டு, Google இயக்ககத்தில் கோப்பு பதிவேற்றத்தை செயல்படுத்த `.send` கட்டளை முக்கியமானது. |
CreateBoundary | இந்தச் செயல்பாடானது மல்டிபார்ட் உள்ளடக்கத்திற்கான தனித்துவமான எல்லை சரத்தை மாறும் வகையில் உருவாக்குகிறது. பல பகுதி HTTP கோரிக்கையை உருவாக்கும் போது கோப்பின் வெவ்வேறு பகுதிகளை (மெட்டாடேட்டா மற்றும் கோப்பு உள்ளடக்கம் போன்றவை) பிரிப்பதில் இது அவசியம். |
Debug.Print | பிழைத்திருத்த நோக்கங்களுக்காகப் பயன்படுத்தப்படும் VBA- குறிப்பிட்ட கட்டளை. இந்த ஸ்கிரிப்ட்டின் சூழலில், இது Google இன் API இலிருந்து பதிலை வெளியிடுகிறது, கோரிக்கை வெற்றிகரமாக இருந்ததா அல்லது தவறான கோரிக்கை போன்ற பிழை உள்ளதா என்பதைக் கண்டறிய உதவுகிறது. |
service.files().create | பைதான் ஸ்கிரிப்ட்டில், பயனரின் கூகுள் டிரைவில் ஒரு புதிய கோப்பை உருவாக்க இந்த கட்டளை Google Drive API உடன் தொடர்பு கொள்கிறது. இது மெட்டாடேட்டா மற்றும் கோப்பு உள்ளடக்கத்தை எடுத்து, அதை டிரைவ் ஏபிஐக்கு POST கோரிக்கையாக அனுப்புகிறது. |
ADO.Write | VBA இல், பைனரி ஸ்ட்ரீமில் உள்ளடக்கத்தைச் சேர்க்க `ADO.Write` முறை பயன்படுத்தப்படுகிறது. இங்கே, இது கோப்பு மெட்டாடேட்டா மற்றும் பைனரி தரவு உள்ளிட்ட பல பகுதி உள்ளடக்கத்தை HTTP வழியாக Google இயக்ககத்திற்கு அனுப்பும் முன் ஸ்ட்ரீமில் எழுதுகிறது. |
VBA ஸ்கிரிப்ட்கள் Google இயக்ககப் பதிவேற்றங்களை எவ்வாறு நிர்வகிக்கின்றன மற்றும் பிழைகளைத் தீர்க்கின்றன
வழங்கப்பட்ட VBA ஸ்கிரிப்ட்டில், உள்ளூர் கோப்பகத்திலிருந்து Google இயக்ககத்தில் கோப்புகளைப் பதிவேற்றுவதைத் தானியங்குபடுத்துவதே குறிக்கோள். Google Drive API. இந்தச் செயல்பாட்டின் திறவுகோல், கோப்பை அதன் மெட்டாடேட்டாவுடன் பைனரி வடிவில் அனுப்ப பல பகுதி POST கோரிக்கையை உருவாக்குகிறது. `MSXML2.ServerXMLHTTP60` ஆப்ஜெக்ட்டின் பயன்பாடு VBA குறியீட்டை Google Drive API உட்பட இணைய சேவையகங்களுடன் தொடர்பு கொள்ள அனுமதிக்கிறது. HTTP கோரிக்கை/பதில் சுழற்சியைக் கையாளவும், API புரிந்துகொள்ளும் வகையில் கோப்பை அனுப்பவும் இந்தப் பொருள் அவசியம்.
இந்தச் செயல்பாட்டில் எதிர்கொள்ளும் முக்கிய சவால்களில் ஒன்று அங்கீகாரத்தின் சரியான பயன்பாடு ஆகும். ஸ்கிரிப்ட் `Bearer` டோக்கனைப் பயன்படுத்துகிறது, இது பதிவேற்ற அணுகலை வழங்க Google Drive API க்கு செல்லுபடியாகும். கோரிக்கை சரியாக அங்கீகரிக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்த, இந்த டோக்கன் `setRequestHeader` முறையில் அனுப்பப்படுகிறது. இந்த டோக்கன் இல்லாமல் அல்லது அது தவறானதாக இருந்தால், "அங்கீகரிக்கப்படாத" பிழையைப் பெறுவீர்கள். எனவே, டோக்கனைச் சரியாக உருவாக்குவதும், Google இயக்ககக் கணக்கில் அதற்குத் தேவையான பதிவேற்ற அனுமதிகள் இருப்பதை உறுதி செய்வதும் மிக அவசியம்.
கோப்பு உள்ளடக்கத்தைக் கையாள்வது `ADODB.Stream` ஐப் பயன்படுத்தி அடையப்படுகிறது, இது VBA பைனரி வடிவத்தில் கோப்பைப் படிக்க அனுமதிக்கிறது. PDFகள் போன்ற கோப்புகள் பைனரி தரவுகளாகப் பதிவேற்றப்பட வேண்டும் என்பதால் இது மிகவும் முக்கியமானது. பைனரி ஸ்ட்ரீமில் கோப்பை ஏற்றுவதன் மூலம், குறியீடு அதை HTTP வழியாக பரிமாற்றத்திற்கு தயார்படுத்துகிறது. மல்டிபார்ட் கோரிக்கைக்கு கோப்பு மெட்டாடேட்டா மற்றும் பைனரி உள்ளடக்கம் குறிப்பிட்ட பிரிவுகளில் அனுப்பப்பட வேண்டும், தனித்தன்மையால் பிரிக்கப்பட்டது எல்லை. கோரிக்கையை சரியாகக் கட்டமைக்க `CreateBoundary` செயல்பாடு மாறும் வகையில் இந்த எல்லையை உருவாக்குகிறது.
மாற்றாக வழங்கப்பட்ட பைதான் அணுகுமுறை பயன்படுத்துகிறது Google API கிளையன்ட் மற்றும் அங்கீகரிப்புக்கான `service_account.Credentials` முறை, இது தானியங்கு அமைப்புகள் மற்றும் சேவையகங்கள் சம்பந்தப்பட்ட நவீன பயன்பாட்டு நிகழ்வுகளுக்கு மிகவும் பொருத்தமானதாக அமைகிறது. இந்த முறை டோக்கன் நிர்வாகத்தை எளிதாக்குகிறது மற்றும் OAuth 2.0 அங்கீகாரத்தைத் தானாகக் கையாள்வதன் மூலம் "அங்கீகரிக்கப்படாதது" போன்ற பிழைகளின் வாய்ப்பைக் குறைக்கிறது. இரண்டு தீர்வுகளும் வலுவானவை, ஆனால் அங்கீகாரப் பிழைகள் அல்லது தவறான கோப்பு வடிவங்கள் போன்ற பொதுவான சிக்கல்களைத் தவிர்க்க, API நற்சான்றிதழ்களை கவனமாக அமைத்தல் மற்றும் சரியான கோப்பு கையாளுதல் தேவை.
VBA வழியாக Google இயக்ககத்தில் கோப்புகளைப் பதிவேற்றுதல் - அங்கீகரிக்கப்படாத பிழையைத் தீர்ப்பது
Google Drive API மற்றும் டோக்கன் அடிப்படையிலான அங்கீகாரத்துடன் VBA
Sub GoogleDriveAPI()
Const reqURL As String = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"
Const Token As String = "api-token" ' Replace with your actual API token
Dim content() As Byte, fPath As String, FileName As String
Dim file_metadata As String
fPath = "D:\" ' Path to the file to be uploaded
FileName = "M.pdf" ' The file name
file_metadata = "{'name':'" & FileName & "'}"
' Boundary for separating file parts
Dim Boundary, part As String, ado As Object
Boundary = CreateBoundary()
part = BuildMultipartContent(Boundary, file_metadata, fPath, FileName)
' Create HTTP request for Google Drive API
Dim req As New MSXML2.XMLHTTP60
Set req = New MSXML2.ServerXMLHTTP60
With req
.Open "POST", reqURL, False
.setRequestHeader "Authorization", "Bearer " & Token
.setRequestHeader "Content-Type", "multipart/related; boundary=" & Boundary
.send ado.Read
End With
If req.Status = 200 Then
Debug.Print req.responseText ' Success
Else
MsgBox req.Status & ": " & req.statusText ' Error handling
End If
End Sub
Function CreateBoundary() As String
Dim s As String
Dim n As Integer
For n = 1 To 16
s = s & Chr(65 + Int(Rnd * 25))
Next
CreateBoundary = s & CDbl(Now)
End Function
Function BuildMultipartContent(Boundary As String, metadata As String, fPath As String, FileName As String) As String
Dim part As String
part = "--" & Boundary & vbCrLf
part = part & "Content-Type: application/json; charset=UTF-8" & vbCrLf & vbCrLf
part = part & metadata & vbCrLf
part = part & "--" & Boundary & vbCrLf
part = part & "Content-Type: application/pdf" & vbCrLf
part = part & "Content-Transfer-Encoding: binary" & vbCrLf & vbCrLf
part = part & ReadBinaryFile(fPath, FileName) & vbCrLf
part = part & "--" & Boundary & "--"
BuildMultipartContent = part
End Function
Function ReadBinaryFile(fPath As String, FileName As String) As String
Dim ado As Object
Set ado = CreateObject("ADODB.Stream")
ado.Type = 1 ' Binary mode
ado.Open
ado.LoadFromFile fPath & FileName
ReadBinaryFile = ado.Read
ado.Close
End Function
மாற்று அணுகுமுறை: பைத்தானைப் பயன்படுத்தி Google Drive API வழியாக கோப்புகளைப் பதிவேற்றுகிறது
அங்கீகாரத்திற்காக Google Drive API மற்றும் OAuth 2.0 உடன் பைதான்
from google.oauth2 import service_account
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
def upload_to_drive():
credentials = service_account.Credentials.from_service_account_file('path-to-credentials.json')
service = build('drive', 'v3', credentials=credentials)
file_metadata = {'name': 'M.pdf'}
media = MediaFileUpload('D:/M.pdf', mimetype='application/pdf')
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
print('File ID: %s' % file.get('id'))
if __name__ == '__main__':
upload_to_drive()
VBA கூகுள் டிரைவ் அப்லோடுகளில் முறையான அங்கீகாரத்தின் முக்கியத்துவத்தைக் குறிப்பிடுதல்
VBA இல் Google Drive API உடன் பணிபுரியும் போது முக்கிய கூறுகளில் ஒன்று, சரியான அங்கீகார செயல்முறை பின்பற்றப்படுவதை உறுதி செய்வதாகும். Google இயக்ககத்திற்கு பாதுகாப்பான அணுகலுக்கு OAuth 2.0 தேவைப்படுகிறது, அதாவது API டோக்கனுக்கு தேவையான அனுமதிகள் இல்லாவிட்டால் அதை அனுப்பினால் மட்டும் போதாது. பயன்படுத்தப்படும் API டோக்கனில் கோப்புகளைப் பதிவேற்றுவதற்குத் தேவையான ஸ்கோப்கள் இருக்க வேண்டும், மேலும் அது காலாவதியானாலோ அல்லது செல்லாததாகவோ இருந்தால், "அங்கீகரிக்கப்படாத" பிழையை நீங்கள் சந்திப்பீர்கள். டோக்கனை அவ்வப்போது புதுப்பித்து, சரியான அனுமதிகளை உறுதிசெய்வதன் மூலம் இந்தச் சிக்கல்களைத் தடுக்கலாம்.
கருத்தில் கொள்ள வேண்டிய மற்றொரு முக்கியமான அம்சம், கோப்பு பதிவேற்றத்தின் போது மல்டிபார்ட் தரவு கையாளப்படும் விதம் ஆகும். இந்த செயல்பாட்டில், மல்டிபார்ட் படிவத்தை உருவாக்குவது மிகவும் முக்கியமானது, ஏனெனில் இது கோப்பு மெட்டாடேட்டாவையும் உண்மையான கோப்பு உள்ளடக்கத்தையும் பிரிக்கிறது. எல்லை சரம், மாறும் வகையில் உருவாக்கப்படுகிறது, இந்த பகுதிகளுக்கு இடையே வேறுபடுத்திக் காட்ட ஒரு டிலிமிட்டராக செயல்படுகிறது. தரவு சரியாக வடிவமைக்கப்பட வேண்டும், இதனால் Google Drive API அதை சரியாக அலச முடியும். இந்த அமைப்பு இல்லாமல், API கோரிக்கையை நிராகரிக்கும், இது "மோசமான கோரிக்கை" பிழைகளுக்கு வழிவகுக்கும்.
இறுதியாக, VBA ஸ்கிரிப்ட்டில் பிழை கையாளுதல் சமமாக முக்கியமானது. கோப்புகளைப் பதிவேற்றும்போது, நெட்வொர்க் இணைப்புச் சிக்கல்கள் அல்லது தவறான கோப்புப் பாதைகள் போன்ற எதிர்பாராத சிக்கல்கள் ஏற்படலாம். பிழை சரிபார்ப்பு நடைமுறைகள் மற்றும் பிழைத்திருத்த வழிமுறைகளை செயல்படுத்துதல் பிழைத்திருத்தம்.அச்சு பிழைகளின் மூலத்தை விரைவாகக் கண்டறிய டெவலப்பர்களை அனுமதிக்கிறது. பதிவேற்றம் தோல்வியடையும் போது தெளிவான கருத்தை வழங்குவதன் மூலம், பிழைகாணல் மிகவும் திறமையானது, செயல்முறையை மென்மையாகவும் எதிர்கால கோப்பு பதிவேற்றங்களுக்கு மிகவும் நம்பகமானதாகவும் ஆக்குகிறது.
VBA ஐப் பயன்படுத்தி Google இயக்ககத்தில் கோப்புகளைப் பதிவேற்றுவது பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- எனது VBA ஸ்கிரிப்ட்டில் உள்ள "அங்கீகரிக்கப்படாத" பிழையை நான் எவ்வாறு தீர்ப்பது?
- நீங்கள் பயன்படுத்தும் API டோக்கனுக்கு சரியான அனுமதிகள் உள்ளதா மற்றும் காலாவதியாகவில்லை என்பதை உறுதிப்படுத்தவும். நீங்கள் டோக்கனைப் புதுப்பிக்கலாம் அல்லது பயன்படுத்தலாம் OAuth 2.0 புதிய ஒன்றை உருவாக்குவதற்கான ஓட்டம்.
- மல்டிபார்ட் கோரிக்கையில் எல்லையின் நோக்கம் என்ன?
- எல்லை என்பது மல்டிபார்ட் தரவின் வெவ்வேறு பகுதிகளைப் பிரிக்கும் தனித்துவமான சரம். இது API ஐப் பயன்படுத்தும் போது கோப்பு மெட்டாடேட்டா மற்றும் கோப்பு உள்ளடக்கத்தை வேறுபடுத்த உதவுகிறது multipart/related கோரிக்கைகள்.
- எனது கோப்பு ஏன் சரியாக பதிவேற்றப்படவில்லை?
- இது மல்டிபார்ட் டேட்டாவின் தவறான வடிவமைப்பு அல்லது தவறான கோப்பு பாதை காரணமாக இருக்கலாம். பயன்படுத்தவும் ADODB.Stream பைனரி வடிவத்தில் கோப்பைப் படித்து பாதை சரியாக உள்ளதா என்பதை உறுதிப்படுத்தவும்.
- கூகுள் டிரைவ் ஏபிஐ இலிருந்து பதிலை எவ்வாறு சரிபார்க்கலாம்?
- நீங்கள் பயன்படுத்தலாம் Debug.Print VBA எடிட்டரின் உடனடி சாளரத்தில் சேவையகத்தின் பதிலைக் காண்பிக்க. கோரிக்கை வெற்றியடைந்ததா அல்லது பிழை ஏற்பட்டதா என்பதைப் புரிந்துகொள்ள இது உதவுகிறது.
- VBA ஐப் பயன்படுத்தி Google இயக்ககத்தில் கோப்புகளைப் பதிவேற்றும்போது சில பொதுவான தவறுகள் என்ன?
- காலாவதியான API டோக்கனைப் பயன்படுத்துதல், HTTP கோரிக்கையின் தவறான வடிவமைப்பு அல்லது தேவையானவற்றைச் சேர்க்காதது போன்ற சில பொதுவான தவறுகள் அடங்கும். Authorization தலைப்புகள்.
VBA கூகுள் டிரைவ் பதிவேற்றங்களில் வழிகாட்டியை மூடுதல்
முடிவில், விபிஏ வழியாக எக்செல் இலிருந்து கூகுள் டிரைவிற்கு கோப்புகளை வெற்றிகரமாக பதிவேற்ற, அங்கீகாரம் மற்றும் வடிவமைப்பில் கவனமாக கவனம் செலுத்த வேண்டும். "அங்கீகரிக்கப்படாதது" போன்ற பொதுவான பிழைகளைத் தவிர்ப்பதற்கு துல்லியமான டோக்கன் மற்றும் சரியான API அமைப்புகளைப் பயன்படுத்துவது மிகவும் முக்கியமானது.
மேலும், மல்டிபார்ட் கோரிக்கைகளின் சரியான கட்டுமானத்தை உறுதிசெய்தல் மற்றும் பைனரி கோப்பு தரவை திறமையாக கையாளுதல் ஆகியவை செயல்முறையை சீராகவும் பிழையற்றதாகவும் மாற்றும். சரியான அணுகுமுறை மற்றும் பிழை கையாளும் நுட்பங்கள் மூலம், இந்த பணிகளை எக்செல் இல் தடையின்றி தானியக்கமாக்க முடியும்.
VBA Google இயக்ககப் பதிவேற்றப் பிழைகளுக்கான ஆதாரங்கள் மற்றும் குறிப்புகள்
- கோப்பு பதிவேற்றங்களைக் கையாள்வது உட்பட, VBA உடன் Google Drive API ஐ ஒருங்கிணைப்பது பற்றிய விரிவான தகவலை இந்த ஆதாரம் வழங்குகிறது: Google இயக்கக API ஆவணம் .
- டோக்கன் அங்கீகாரப் பிழைகள் உட்பட, Google இயக்ககத்தில் கோப்புகளைப் பதிவேற்ற VBA பயன்படுத்தும் போது ஏற்படும் பொதுவான சிக்கல்களைத் தீர்க்க இந்த மன்ற விவாதம் உதவியது: ஸ்டாக் ஓவர்ஃப்ளோ - VBA உடன் Google Drive பதிவேற்றம் .
- கோப்பு பதிவேற்றங்கள் மற்றும் Google API ஆகியவற்றின் சூழலில் OAuth 2.0 ஐப் புரிந்துகொள்வதற்கு: OAuth 2.0 அங்கீகார ஆவணம் .