যেহেতু অ্যাপস স্ক্রিপ্ট প্রকল্পগুলি গুগল ড্রাইভে থাকে, তাই ডেভেলপাররা গুগল ড্রাইভ এপিআই ব্যবহার করে অ্যাপস স্ক্রিপ্ট সোর্স কোড আমদানি এবং রপ্তানি করতে পারে (অ্যাপস স্ক্রিপ্টের ড্রাইভ পরিষেবার সাথে বিভ্রান্ত হবেন না)।
উদাহরণস্বরূপ, একজন ডেভেলপার তার পছন্দের কোড এডিটর দিয়ে তার স্থানীয় মেশিনে নতুন অ্যাপস স্ক্রিপ্ট কোড লিখতে পারেন এবং অন্যান্য ডেভেলপারদের সাথে সহযোগিতা করার জন্য Git এর মতো একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করতে পারেন। যখন একটি সংস্করণ চূড়ান্ত করা হয়, তখন তিনি REST API ব্যবহার করে ফাইলগুলি Google ড্রাইভে আপলোড (আমদানি) করতে পারেন, যেখানে সেগুলি অন্যান্য অ্যাপস স্ক্রিপ্ট প্রকল্পের মতো ব্যবহার করা যেতে পারে।
স্থানীয় সংস্করণগুলিতে কোড পরিবর্তন করা যেতে পারে এবং Google ড্রাইভ API ব্যবহার করে অ্যাপস স্ক্রিপ্ট প্রকল্পের সাথে সিঙ্ক করা যেতে পারে। বিদ্যমান প্রকল্পগুলি Google ড্রাইভ থেকে স্থানীয় মেশিনে ডাউনলোড (রপ্তানি) করা যেতে পারে।
বৈশিষ্ট্য এবং সীমাবদ্ধতা
আপনি যদি প্রোজেক্ট ইম্পোর্ট বা এক্সপোর্ট করার জন্য গুগল ড্রাইভ এপিআই ব্যবহার করতে চান, তাহলে নিম্নলিখিত বিষয়গুলি সম্পর্কে সচেতন থাকুন:
- সার্ভার-সাইড স্ক্রিপ্ট ফাইলগুলি ".gs" দিয়ে শেষ হবে বলে আশা করা হচ্ছে। আপনি .js ফাইল ব্যবহার করে স্থানীয়ভাবে ডেভেলপ করতে চাইতে পারেন, তবে Google ড্রাইভে আমদানি করার আগে একটি .gs এক্সটেনশন অন্তর্ভুক্ত করার জন্য নাম পরিবর্তন করতে ভুলবেন না।
- ক্লায়েন্ট-সাইড স্ক্রিপ্ট ফাইলগুলি ".html" দিয়ে শেষ হতে হবে। এর মধ্যে ক্লায়েন্ট-সাইড .html, .js অথবা .css ফাইলগুলি অন্তর্ভুক্ত। আবার, আপনি অন্যান্য এক্সটেনশন ব্যবহার করে স্থানীয়ভাবে বিকাশ করতে পারেন, তবে Google ড্রাইভে আমদানি করার আগে .html এক্সটেনশন থাকা গুরুত্বপূর্ণ।
- যখন আপনি Google ড্রাইভে প্রোজেক্ট ফাইলগুলি আমদানি করবেন, তখন সেই ফাইলগুলিতে থাকা সমস্ত ডেটা ওভাররাইট হয়ে যাবে। আপনি আংশিক টেক্সট যোগ বা সন্নিবেশ করতে পারবেন না; পুরো ফাইলটি আপডেট করতে হবে।
- সার্ভার-সাইড স্ক্রিপ্ট ফাইলগুলিতে অবশ্যই বৈধ জাভাস্ক্রিপ্ট থাকতে হবে। যদি আপনার সার্ভার .js ফাইলগুলিতে ত্রুটি থাকে, তাহলে Google ড্রাইভ API আপডেট কলটি 5xx ত্রুটির মাধ্যমে ব্যর্থ হবে। আমদানি করার আগে আপনার কোডটি লিন্ট করে আপনি এটি প্রতিরোধ করতে পারেন।
- খালি ফাইলগুলি আমদানি করা যাবে না। যদি আপনি একটি খালি ফাইল আপলোড করার চেষ্টা করেন তবে Google ড্রাইভ API আপডেট কলটি 5xx ত্রুটির সাথে ব্যর্থ হবে।
- শুধুমাত্র স্বতন্ত্র স্ক্রিপ্টগুলি আমদানি বা রপ্তানি করা যেতে পারে। কন্টেইনার-বাউন্ড স্ক্রিপ্টগুলি Google ড্রাইভ API এর মাধ্যমে অ্যাক্সেস করা যাবে না।
- শুধুমাত্র সোর্স কোড ইম্পোর্ট বা এক্সপোর্ট করা যাবে। প্রোজেক্ট প্রোপার্টি বা লগের মতো রিসোর্সগুলিও Google ড্রাইভ API এর মাধ্যমে প্রকাশ করা হয় না। স্ক্রিপ্ট সংস্করণ তৈরি, প্রকাশ বা স্ক্রিপ্ট কার্যকর করার মতো কাজগুলি Google ড্রাইভ API এর মাধ্যমে সম্ভব নয়।
- আপনি কেবল একটি সার্ভার
Code.gsফাইলের মধ্যেই সীমাবদ্ধ নন। ডেভেলপমেন্টের সুবিধার্থে আপনি একাধিক ফাইলে সার্ভার কোড ছড়িয়ে দিতে পারেন। সমস্ত সার্ভার ফাইল একই গ্লোবাল নেমস্পেসে লোড করা হয়, তাই নিরাপদ এনক্যাপসুলেশন প্রদান করতে চাইলে জাভাস্ক্রিপ্ট ক্লাস ব্যবহার করুন।
ড্রাইভ এপিআই
গুগল ড্রাইভ এপিআই ডেভেলপারদের প্রোগ্রাম্যাটিকভাবে গুগল ড্রাইভে ফাইল অ্যাক্সেস করার অনুমতি দেয়। এই এপিআই ফাইল ডাউনলোড করতে GET এবং ফাইল আপলোড করতে PUT/POST ব্যবহার করে। বিস্তারিত ডকুমেন্টেশন এবং কুইকস্টার্টের জন্য অনুগ্রহ করে গুগল ড্রাইভ এপিআই ওভারভিউ পৃষ্ঠাটি দেখুন।
এই নির্দেশিকাটি এই কলগুলি ব্যবহার করে Files রিসোর্স ব্যবহার করে ফাইলগুলি তালিকাভুক্ত করা এবং সরানোর উপর আলোকপাত করবে:
অনুমোদন
Google Drive API-তে করা সমস্ত অনুরোধ OAuth 2.0 প্রোটোকলের মাধ্যমে একজন প্রমাণিত ব্যবহারকারী দ্বারা অনুমোদিত হতে হবে। আরও বিস্তারিত জানার জন্য, অনুগ্রহ করে Google Drive API অনুমোদন ডকুমেন্টেশন দেখুন।
একটি অ্যাপ্লিকেশনের প্রয়োজন হতে পারে এমন অন্যান্য স্কোপের পাশাপাশি (যেমন https://www.googleapis.com/auth/drive ), Google Apps Script প্রকল্পগুলি আমদানি বা রপ্তানি করার চেষ্টা করা সমস্ত অ্যাপ্লিকেশনকে অবশ্যই বিশেষ স্কোপের অনুরোধ করতে হবে:
https://www.googleapis.com/auth/drive.scripts
বিদ্যমান প্রকল্পগুলির তালিকা তৈরি করুন
আপনার ড্রাইভে থাকা সমস্ত অ্যাপস স্ক্রিপ্ট প্রকল্পের তালিকা তৈরি করতে, MIME ধরণের application/vnd.google-apps.script সহ ফাইলগুলির জন্য অনুসন্ধান করতে Files রিসোর্স ব্যবহার করুন। শুধুমাত্র আপনার মালিকানাধীন ফাইলগুলি অন্তর্ভুক্ত করার প্রতিক্রিয়া ফিল্টার করতে, 'me' in owners অনুসন্ধান প্যারামিটার অন্তর্ভুক্ত করুন।
এখানে একটি নমুনা অনুরোধ এবং প্রতিক্রিয়া দেওয়া হল যা JSON প্রতিক্রিয়ার মাধ্যমে ফিরে আসা অ্যাপস স্ক্রিপ্ট প্রকল্পগুলির একটি অ্যারে দেখায়।
GET https://www.googleapis.com/drive/v2/files?q=mimeType%3D'application%2Fvnd.google-apps.script'+and+'me'+in+owners Authorization: Bearer ya29.fakebearerstring
{ "kind": "drive#fileList", "etag": "\"kjsas92/f3zGUXczKMxEB_9ZTMRFOF3d1ZU\"", "selfLink": "https://www.googleapis.com/drive/v2/files?q=mimeType%3D'application/vnd.google-apps.script'+and+'me'+in+owners", "items": [ { "kind": "drive#file", "id": "1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D", "etag": "\"kjsas92/MTM3MDk3ODY5ODQyNg\"", "selfLink": "https://www.googleapis.com/drive/v2/files/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D", "alternateLink": "https://script.google.com/a/google.com/d/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D/edit?usp=drivesdk", "iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_11_script_list.png", "title": "Mail merge", "mimeType": "application/vnd.google-apps.script", "description": "", "labels": { "starred": false, "hidden": false, "trashed": true, "restricted": false, "viewed": true }, "createdDate": "2013-06-11T19:24:45.188Z", "modifiedDate": "2013-06-11T19:24:58.426Z", "modifiedByMeDate": "2013-06-11T19:24:58.426Z", "lastViewedByMeDate": "2013-06-11T19:24:58.426Z", "parents": [ { "kind": "drive#parentReference", "id": "0APdyIOzo7bWDUk9PVA", "selfLink": "https://www.googleapis.com/drive/v2/files/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D/parents/0APdyIOzo7bWDUk9PVA", "parentLink": "https://www.googleapis.com/drive/v2/files/0APdyIOzo7bWDUk9PVA", "isRoot": true } ], "exportLinks": { "application/json": "https://script.google.com/feeds/download/export?id=1234567890abcefghijklmnopqrstuvwxyz&format=json" }, "userPermission": { "kind": "drive#permission", "etag": "\"kjsas92/259X2r5DVstv1CcIQTjt_RQPSW8\"", "id": "me", "selfLink": "https://www.googleapis.com/drive/v2/files/1vi0uwcMdHsRv1YFtgq7XdiTGSdqgjIYpdQNC0A_Udn79LOhH0vYL132D/permissions/me", "role": "owner", "type": "user" }, "quotaBytesUsed": "0", "ownerNames": [ "John Doe" ], "owners": [ { "kind": "drive#user", "displayName": "John Doe", "picture": { "url": "https://lh4.googleusercontent.com/-yd1rIb6Pe2Y/AAAAAAAAAAI/AAAAAAAAAGs/PP5vTuZonik/s64/photo.jpg" }, "isAuthenticatedUser": true, "permissionId": "1234566789" } ], "lastModifyingUserName": "John Doe", "lastModifyingUser": { "kind": "drive#user", "displayName": "John Doe", "picture": { "url": "https://lh4.googleusercontent.com/-yd1rIb6Pe2Y/AAAAAAAAAAI/AAAAAAAAAGs/PP5vTuZonik/s64/photo.jpg" }, "isAuthenticatedUser": true, "permissionId": "1234566789" }, "editable": true, "writersCanShare": true, "shared": false, "explicitlyTrashed": true, "appDataContents": false } ] }
যদি আপনি কোনও অ্যাপস স্ক্রিপ্ট প্রকল্পের ফাইল আইডি জানেন, তাহলে আপনি নিম্নলিখিত API কলের মাধ্যমে সরাসরি এটি আনতে পারেন:
GET https://www.googleapis.com/drive/v2/files/1234567890abcefghijklmnopqrstuvwxyz
Authorization: Bearer ya29.fakebearerstring
ড্রাইভ থেকে প্রোজেক্ট এক্সপোর্ট করুন
API থেকে একটি File রিসোর্স ফিরে পেলে, exportLinks প্রপার্টিতে একটি URL থাকবে যা প্রকল্পের বিষয়বস্তু JSON ডেটা হিসেবে পেতে ব্যবহার করা হবে। এই URLটি কেমন হতে পারে তার একটি নমুনা এখানে দেওয়া হল:
https://script.google.com/feeds/download/export?id=1234567890abcefghijklmnopqrstuvwxyz&format=json
প্রকল্পের বিষয়বস্তু পুনরুদ্ধারের জন্য এই URL-এ একটি অনুরোধ করুন। নিশ্চিত করুন যে আপনি একই OAuth Bearer টোকেন সহ একটি Authorization হেডার অন্তর্ভুক্ত করেছেন।
এখানে একটি নমুনা অনুরোধ এবং প্রতিক্রিয়া দেওয়া হল:
GET https://script.google.com/feeds/download/export?id=1234567890abcefghijklmnopqrstuvwxyz&format=json Authorization: Bearer ya29.fakebearerstring
{ "files": [ { "id":"9basdfbd-749a-4as9b-b9d1-d64basdf803", "name":"Code", "type":"server_js", "source":"function doGet() {\n return HtmlService.createHtmlOutputFromFile(\u0027index\u0027);\n}\n" }, { "id":"3asf7c0d-1afb-4a9-8431-5asdfc79e7ae", "name":"index", "type":"html", "source":"\u003chtml\u003e\n \u003cbody\u003e\n Hello, world!\n \u003c/body\u003e\n\u003c/html\u003e" } ] }
উপরের উদাহরণে HTML পরিষেবা নির্দেশিকা থেকে একটি সাধারণ ওয়েব অ্যাপের কোড অন্তর্ভুক্ত রয়েছে। মনে রাখবেন যে আপনি Files এর একটি অ্যারে ফিরে পাবেন, প্রতিটিতে নিম্নলিখিত 4টি বৈশিষ্ট্য রয়েছে:
id | আপডেটের সময় এই ফাইলটি উল্লেখ করার জন্য একটি প্রকল্পের মধ্যে একটি ফাইলের অভ্যন্তরীণ শনাক্তকারী প্রয়োজন। |
name | স্ক্রিপ্ট এডিটরে প্রদর্শিত এক্সটেনশন ছাড়া ফাইলের নাম। |
type | দুই ধরণের ফাইল হল server_js এবং html। |
source | ফাইলটিতে থাকা এনকোডেড সোর্স কোড। |
ড্রাইভে প্রকল্পগুলি আমদানি করুন
একটি বিদ্যমান প্রকল্প আপডেট করতে, উপযুক্ত fileId ব্যবহার করে ফাইল update API-তে একটি HTTP PUT কল করুন। নীচের উদাহরণটি মিডিয়া-আপলোড অংশের জন্য একটি নমুনা লেনদেন দেখায়। ক্লায়েন্ট লাইব্রেরিগুলির একটি ব্যবহার করে, আপনার অ্যাপ্লিকেশনটি সহজেই একই আপলোড কলে মেটাডেটা এবং মিডিয়া অন্তর্ভুক্ত করতে পারে। মনে রাখবেন যে Content-Type হেডার এই ক্ষেত্রে আপলোড করা সামগ্রীর ধরণ নির্দিষ্ট করে।
PUT https://www.googleapis.com/upload/drive/v2/files/1234567890abcefghijklmnopqrstuvwxyz Authorization: Bearer ya29.fakebearerestring Content-Type: application/vnd.google-apps.script+json
{ "files": [ { "id":"9basdfbd-749a-4as9b-b9d1-d64basdf803", "name":"Code", "type":"server_js", "source":"function doGet() {\n return HtmlService.createHtmlOutputFromFile(\u0027index\u0027);\n}\n" }, { "id":"3asf7c0d-1afb-4a9-8431-5asdfc79e7ae", "name":"index", "type":"html", "source":"\u003chtml\u003e\n \u003cbody\u003e\n New message!!\n \u003c/body\u003e\n\u003c/html\u003e" } ] }
একটি প্রকল্পের মধ্যে নতুন ফাইল তৈরি করুন
একটি প্রকল্পের মধ্যে একটি নতুন ফাইল তৈরি করতে, id বৈশিষ্ট্য ছাড়াই একটি ফাইলের জন্য একটি PUT অনুরোধ পাঠান। যদি আপনি একটি অজানা শনাক্তকারী ফাইল অন্তর্ভুক্ত করেন, তাহলে সিস্টেমটি একটি ত্রুটি বার্তা পাঠাবে।
একটি প্রকল্পের মধ্যে ফাইল মুছে ফেলুন
কোনও প্রকল্প থেকে কোনও ফাইল মুছে ফেলার জন্য, একটি PUT অনুরোধ পাঠান যাতে সেই ফাইলটি অন্তর্ভুক্ত না থাকে (কিন্তু এতে প্রকল্পের অন্যান্য সমস্ত ফাইল অন্তর্ভুক্ত থাকে)। আমদানি প্রক্রিয়া চলাকালীন ফেরত না পাঠানো যেকোনো ফাইল সার্ভার থেকে মুছে ফেলা হবে।
একটি প্রকল্পের মধ্যে ফাইলগুলির নাম পরিবর্তন করুন
একটি প্রকল্পের মধ্যে একটি ফাইলের নাম পরিবর্তন করতে, বিদ্যমান id দিয়ে একটি PUT অনুরোধ পাঠান কিন্তু একটি নতুন name দিন। মনে রাখবেন যে সার্ভার type পরিবর্তন করার যেকোনো প্রচেষ্টা উপেক্ষা করে।
নতুন প্রকল্প তৈরি করুন
একটি নতুন প্রকল্প তৈরি করতে, ফাইল insert API-তে একটি POST অনুরোধ পাঠান। update কলের মতো, আপনি প্রকল্পের নাম এবং বিবরণের মতো মেটাডেটা অন্তর্ভুক্ত করার জন্য একটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে পারেন।
এখানে মিডিয়া আপলোডের একটি নমুনা লেনদেন দেওয়া হল। এটি আপনার ড্রাইভে "শিরোনামহীন" নামে একটি প্রকল্প তৈরি করবে। URL-এ convert প্যারামিটারটি প্রয়োজন। update কলের মতো, Content-Type হেডারটিও প্রয়োজন।
POST https://www.googleapis.com/upload/drive/v2/files?convert=true Authorization: Bearer ya29.fakebearerestring Content-Type: application/vnd.google-apps.script+json
{ "files": [ { "name":"Code", "type":"server_js", "source":"function doGet() {\n return HtmlService.createHtmlOutputFromFile(\u0027index\u0027);\n}\n" }, { "name":"index", "type":"html", "source":"\u003chtml\u003e\n \u003cbody\u003e\n Hello, world!!\n \u003c/body\u003e\n\u003c/html\u003e" } ] }