Poziom kodowania: średnio zaawansowany
Czas trwania: 15 minut
Typ projektu: automatyzacja z regułą zależną od czasu
Cele
- Dowiedz się, do czego służy dane rozwiązanie.
- dowiedzieć się, jak usługi Apps Script
działają w danym rozwiązaniu.
- Skonfiguruj skrypt.
- Uruchom skrypt.
Informacje o rozwiązaniu
Automatycznie importuj dane z plików CSV do jednego arkusza kalkulacyjnego Arkuszy Google.
Jeśli korzystasz z wielu plików CSV o podobnej strukturze, możesz użyć tego rozwiązania, aby scentralizować dane w Arkuszach.
Jak to działa
Skrypt uruchamia się codziennie z regułą zależną od czasu. Przegląda pliki CSV w wyznaczonym folderze
i dodaje dane z każdego pliku do arkusza kalkulacyjnego. Domyślnie skrypt usuwa wiersz nagłówka każdego zbioru danych CSV przed dodaniem danych do ostatniego wiersza arkusza. Skrypt wysyła e-maila z podsumowaniem z listą zaimportowanych plików i przenosi je do innego folderu, aby zapobiec zduplikowanemu przetwarzaniu.
Skrypt zawiera też funkcje, które konfiguruje przykładowe pliki CSV, aby zademonstrować to rozwiązanie.
Usługi Apps Script
To rozwiązanie korzysta z następujących usług:
- Usługa skryptu – tworzy regułę opartą na czasie.
- Usługa Dysku – pobiera foldery używane przez skrypt do przechowywania przetworzonych i nieprzetworzonych plików CSV i tworzy je, jeśli nie istnieją. Pobiera adres URL projektu Apps Script
do uwzględnienia w e-mailu z podsumowaniem.
- Usługa arkusza kalkulacyjnego – pobiera arkusz kalkulacyjny, do którego skrypt dodaje dane z każdego pliku CSV.
- Usługa podstawowa – używa klasy
Session
do pobierania adresu e-mail użytkownika i strefy czasowej skryptu.
- To, kto uruchomi skrypt, zależy od użytkownika. Ponieważ skrypt działa na wyzwalaczu opartym na czasie, użytkownik jest zdefiniowany jako osoba, która go utworzyła.
- Skrypt korzysta ze strefy czasowej, aby dodać datę i godzinę uruchomienia skryptu do e-maila z podsumowaniem.
- Usługa narzędzi – przekształca każdy plik CSV w tablicę. Formatuje datę, którą skrypt dodaje do e-maila z podsumowaniem.
- Mail service (Usługa poczty) – wysyła e-maila z podsumowaniem po zaimportowaniu danych z plików CSV do arkusza kalkulacyjnego.
Wymagania wstępne
Aby korzystać z tego przykładu, musisz spełnić te wymagania wstępne:
- konta Google (konta Google Workspace mogą wymagać zatwierdzenia przez administratora),
- Przeglądarka z dostępem do internetu.
Konfigurowanie skryptu
- Kliknij przycisk poniżej, aby otworzyć projekt Apps Script Importuj dane CSV.
Otwórz projekt
- Kliknij Przegląd info_outline.
- Na stronie przeglądu kliknij Utwórz kopię .
Uruchom skrypt
- W skopiowanym projekcie Apps Script otwórz plik SetupSample.gs.
- W menu funkcji wybierz setupSample i kliknij Uruchom. Ta funkcja tworzy aktywator czasowy, pliki CSV, arkusz kalkulacyjny i folder, których używa do prawidłowego działania skryptu.
Gdy pojawi się odpowiedni komunikat, autoryzuj skrypt.
Jeśli na ekranie zgody OAuth wyświetli się ostrzeżenie: Ta aplikacja nie jest zweryfikowana, wybierz Zaawansowane >
Otwórz projekt {Project Name} (niebezpieczny).
Aby wyświetlić aktywator zależny od czasu po zakończeniu konfiguracji, kliknij Reguły alarm.
Aby wyświetlić utworzone pliki, otwórz folder [Apps Script sample] Importuj pliki CSV na Dysku Google.
Wróć do projektu Apps Script i w edytorze otwórz plik Code.gs.
W menu funkcji wybierz updateApplicationSheet i kliknij Uruchom.
Aby wyświetlić e-maila z podsumowaniem i linkiem do arkusza kalkulacyjnego z zaimportowanymi danymi, sprawdź swoją skrzynkę odbiorczą.
(Opcjonalnie) Resetowanie rozwiązania
Możesz zresetować rozwiązanie, aby zaktualizować je na podstawie własnych danych, lub ponownie uruchomić wersję demonstracyjną.
- W projekcie Apps Script otwórz plik SetupSample.gs.
- W menu funkcji wybierz removeSample i kliknij Uruchom. Ta funkcja usuwa aktywator, pliki i folder utworzone w poprzedniej sekcji.
Sprawdź kod
Aby sprawdzić kod Apps Script dla tego rozwiązania, kliknij Wyświetl kod źródłowy poniżej:
Pokaż kod źródłowy
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)
}
}
Współtwórcy
Ta próbka jest opracowywana przez Google z pomocą Ekspertów Produktowych Google.
Dalsze kroki