कोडिंग का लेवल: बीच के लेवल वाला
कुल समय: 15 मिनट
प्रोजेक्ट टाइप: समय पर ट्रिगर होने वाले ट्रिगर की मदद से ऑटोमेशन की सुविधा
मकसद
- समझें कि समाधान क्या है.
- जानें कि Apps Script सेवा
के अंदर क्या काम करती है.
- स्क्रिप्ट सेट अप करें.
- स्क्रिप्ट चलाएं.
इस सलूशन के बारे में जानकारी
CSV फ़ाइलों से डेटा को अपने-आप एक Google Sheets स्प्रेडशीट में इंपोर्ट करें.
अगर एक जैसी स्ट्रक्चर्ड कई CSV फ़ाइलों के साथ काम किया जाता है, तो डेटा को Sheets में एक ही जगह से दिखाने के लिए इस समाधान का इस्तेमाल किया जा सकता है.
यह कैसे काम करता है
स्क्रिप्ट समय-आधारित ट्रिगर पर रोज़ चलती है. यह तय किए गए फ़ोल्डर में मौजूद CSV फ़ाइलों से फिर से काम करता है
और हर फ़ाइल के डेटा को स्प्रेडशीट में जोड़ता है. डिफ़ॉल्ट रूप से, शीट की आखिरी लाइन में डेटा जोड़ने से पहले स्क्रिप्ट हर CSV डेटासेट की हेडर लाइन हटा देती है. स्क्रिप्ट इंपोर्ट की गई फ़ाइलों की सूची के साथ खास जानकारी वाला एक ईमेल भेजती है. साथ ही, डुप्लीकेट प्रोसेसिंग को रोकने के लिए, फ़ाइलों को किसी दूसरे फ़ोल्डर में ले जाती है.
इस स्क्रिप्ट में ऐसे फ़ंक्शन भी शामिल हैं जो इस समाधान का डेमो देने के लिए, CSV फ़ाइलों का नमूना सेट अप करते हैं.
Apps Script सेवाएं
यह समाधान इन सेवाओं का इस्तेमाल करता है:
- स्क्रिप्ट सेवा–समय पर आधारित ट्रिगर
बनाती है.
- Drive सेवा–यह स्क्रिप्ट, प्रोसेस की गई और प्रोसेस नहीं की गई CSV फ़ाइलों को सेव करने के लिए, उन फ़ोल्डर को ऐक्सेस करती है जिनका इस्तेमाल स्क्रिप्ट में करती है. साथ ही, उनके मौजूद न होने पर फ़ाइलें भी बनाई जाती हैं. खास जानकारी वाले ईमेल में शामिल करने के लिए, Apps Script प्रोजेक्ट का यूआरएल लेता है.
- स्प्रेडशीट सेवा–इस स्प्रेडशीट में वह स्प्रेडशीट मिलती है जहां स्क्रिप्ट, हर CSV फ़ाइल का डेटा जोड़ती है.
- बुनियादी सेवा–यह उपयोगकर्ता का ईमेल पता और स्क्रिप्ट का टाइम ज़ोन पाने के लिए,
Session
क्लास का इस्तेमाल करती है.
- उपयोगकर्ता इस पर आधारित होता है कि स्क्रिप्ट कौन चलाता है. स्क्रिप्ट, समय पर आधारित ट्रिगर पर चलती है. इसलिए, उपयोगकर्ता को ट्रिगर बनाने वाले व्यक्ति के तौर पर बताया जाता है.
- स्क्रिप्ट, खास जानकारी वाले ईमेल में स्क्रिप्ट के भेजे गए समय और तारीख को जोड़ने के लिए टाइम ज़ोन का इस्तेमाल करती है.
- उपयोगिताएं सेवा–हर CSV फ़ाइल को एक अरे में पार्स करती है. उस तारीख को फ़ॉर्मैट करता है जिसे स्क्रिप्ट, खास जानकारी वाले ईमेल में जोड़ती है.
- मेल सेवा–CSV फ़ाइलों का डेटा स्प्रेडशीट में इंपोर्ट होने के बाद, खास जानकारी वाला ईमेल भेजा जाता है.
ज़रूरी शर्तें
इस सैंपल का इस्तेमाल करने के लिए, आपको ये ज़रूरी शर्तें पूरी करनी होंगी:
- Google खाता (Google Workspace खातों के लिए
एडमिन की अनुमति ज़रूरी हो सकती है).
- इंटरनेट ऐक्सेस करने वाला वेब ब्राउज़र.
स्क्रिप्ट सेट अप करें
- CSV डेटा इंपोर्ट करें
Apps Script प्रोजेक्ट खोलने के लिए, इस बटन पर क्लिक करें.
प्रोजेक्ट खोलें
- खास जानकारी info_outline पर क्लिक करें.
- खास जानकारी देने वाले पेज पर, कॉपी बनाएं पर क्लिक करें
.
स्क्रिप्ट चलाएं
- कॉपी किए गए Apps Script प्रोजेक्ट में, SetupSample.gs फ़ाइल पर जाएं.
- फ़ंक्शन ड्रॉपडाउन में, setupSample चुनें और Run पर क्लिक करें. यह फ़ंक्शन टाइम-ड्रिवन ट्रिगर, CSV फ़ाइलें, स्प्रेडशीट, और वह फ़ोल्डर बनाता है जिनका इस्तेमाल स्क्रिप्ट, सही तरीके से चलाने के लिए करती है.
जब कहा जाए, तब स्क्रिप्ट को अनुमति दें.
अगर OAuth के लिए सहमति देने वाली स्क्रीन पर चेतावनी दिखती है, इस ऐप्लिकेशन की पुष्टि नहीं हुई है, तो बेहतर > को चुनकर जारी रखें
{Project Name} पर जाएं (असुरक्षित).
सेटअप पूरा होने के बाद, टाइम-ड्रिवन ट्रिगर देखने के लिए,
ट्रिगर alarm पर क्लिक करें.
बनाई गई फ़ाइलें देखने के लिए, Google Drive में [Apps Script sample]
CSVs इंपोर्ट करें
फ़ोल्डर खोलें.
Apps Script प्रोजेक्ट पर वापस जाएं और एडिटर में, Code.gs फ़ाइल पर जाएं.
फ़ंक्शन ड्रॉपडाउन में, updateApplicationSheet चुनें और
Run पर क्लिक करें.
इंपोर्ट किए गए डेटा वाली स्प्रेडशीट के लिंक के साथ खास जानकारी वाला ईमेल देखने के लिए,
अपना ईमेल इनबॉक्स देखें.
(ज़रूरी नहीं) समाधान को रीसेट करें
अपने डेटा से समाधान को अपडेट करने के लिए, उसे रीसेट करें या डेमो को फिर से आज़माएं.
- Apps Script प्रोजेक्ट में, SetupSample.gs फ़ाइल पर जाएं.
- फ़ंक्शन ड्रॉपडाउन में, removeSample चुनें और Run पर क्लिक करें. यह फ़ंक्शन, पिछले सेक्शन में बनाए गए ट्रिगर, फ़ाइलों, और फ़ोल्डर को मिटा देता है.
कोड की समीक्षा करें
इस समाधान के Apps Script कोड की समीक्षा करने के लिए, नीचे सोर्स कोड देखें पर क्लिक करें:
सोर्स कोड देखें
SampleData.gs
/**
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This file contains functions to access headings and data for sample files.
*
* Sample data is stored in the variable SAMPLE_DATA.
*/
// Fictitious sample data.
const SAMPLE_DATA = {
"headings": [
"PropertyName",
"LeaseID",
"LeaseLocation",
"OwnerName",
"SquareFootage",
"RenewDate",
"LastAmount",
"LastPaymentDate",
"Revenue"
],
"csvFiles": [
{
"name": "Sample One.CSV",
"rows": [
{
"PropertyName": "The Modern Building",
"LeaseID": "271312",
"LeaseLocation": "Mountain View CA 94045",
"OwnerName": "Yuri",
"SquareFootage": "17500",
"RenewDate": "12/15/2022",
"LastAmount": "100000",
"LastPaymentDate": "3/01/2022",
"Revenue": "12000"
},
{
"PropertyName": "Garage @ 45",
"LeaseID": "271320",
"LeaseLocation": "Mountain View CA 94045",
"OwnerName": "Luka",
"SquareFootage": "1000",
"RenewDate": "6/2/2022",
"LastAmount": "50000",
"LastPaymentDate": "4/01/2022",
"Revenue": "20000"
},
{
"PropertyName": "Office Park Deluxe",
"LeaseID": "271301",
"LeaseLocation": "Mountain View CA 94045",
"OwnerName": "Sasha",
"SquareFootage": "5000",
"RenewDate": "6/2/2022",
"LastAmount": "25000",
"LastPaymentDate": "4/01/2022",
"Revenue": "1200"
}
]
},
{
"name": "Sample Two.CSV",
"rows": [
{
"PropertyName": "Tours Jumelles Minuscules",
"LeaseID": "271260",
"LeaseLocation": "8 Rue du Nom Fictif 341 Paris",
"OwnerName": "Lucian",
"SquareFootage": "1000000",
"RenewDate": "7/14/2022",
"LastAmount": "1250000",
"LastPaymentDate": "5/01/2022",
"Revenue": "77777"
},
{
"PropertyName": "Barraca da Praia",
"LeaseID": "271281",
"LeaseLocation": "Avenida da Pastelaria 1903 Lisbon 1229-076",
"OwnerName": "Raha",
"SquareFootage": "1000",
"RenewDate": "6/2/2022",
"LastAmount": "50000",
"LastPaymentDate": "4/01/2022",
"Revenue": "20000"
}
]
},
{
"name": "Sample Three.CSV",
"rows": [
{
"PropertyName": "Round Building in the Square",
"LeaseID": "371260",
"LeaseLocation": "8 Rue du Nom Fictif 341 Paris",
"OwnerName": "Charlie",
"SquareFootage": "75000",
"RenewDate": "8/1/2022",
"LastAmount": "250000",
"LastPaymentDate": "6/01/2022",
"Revenue": "22222"
},
{
"PropertyName": "Square Building in the Round",
"LeaseID": "371281",
"LeaseLocation": "Avenida da Pastelaria 1903 Lisbon 1229-076",
"OwnerName": "Lee",
"SquareFootage": "10000",
"RenewDate": "6/2/2022",
"LastAmount": "5000",
"LastPaymentDate": "4/01/2022",
"Revenue": "1800"
}
]
}
]
}
/**
* Returns headings for use in destination spreadsheet and CSV files.
* @return {string[][]} array of each column heading as string.
*/
function getHeadings() {
let headings = [[]];
for (let i in SAMPLE_DATA.headings)
headings[0].push(SAMPLE_DATA.headings[i]);
return (headings)
}
/**
* Returns CSV file names and content to create sample CSV files.
* @return {object[]} {"file": ["name","csv"]}
*/
function getCSVFilesData() {
let files = [];
// Gets headings once - same for all files/rows.
let csvHeadings = "";
for (let i in SAMPLE_DATA.headings)
csvHeadings += (SAMPLE_DATA.headings[i] + ',');
// Gets data for each file by rows.
for (let i in SAMPLE_DATA.csvFiles) {
let sampleCSV = "";
sampleCSV += csvHeadings;
let fileName = SAMPLE_DATA.csvFiles[i].name
for (let j in SAMPLE_DATA.csvFiles[i].rows) {
sampleCSV += '\n'
for (let k in SAMPLE_DATA.csvFiles[i].rows[j]) {
sampleCSV += SAMPLE_DATA.csvFiles[i].rows[j][k] + ','
}
}
files.push({ name: fileName, csv: sampleCSV })
}
return (files)
}
/*
* Checks data functions are working as necessary.
*/
function test_getHeadings() {
let h = getHeadings()
console.log(h);
console.log(h[0].length);
}
function test_getCSVFilesData() {
const csvFiles = getCSVFilesData();
console.log(csvFiles)
for (const file of csvFiles) {
console.log(file.name)
console.log(file.csv)
}
}
योगदानकर्ता
Google, इस सैंपल को मैनेज करने के लिए Google Developer के विशेषज्ञों की मदद लेता है.
अगले चरण