Chuyển đổi một bảng JSON sang bảng Google Sheets / CSV bằng cách sử dụng Google Apps Script

Chuyển đổi một bảng JSON sang bảng Google Sheets / CSV bằng cách sử dụng Google Apps Script
Video google script json to sheet

Tôi đã làm được! Tôi đã thành công trong việc thực hiện mã này và giờ đây nó thuộc về bạn.

Tình huống: Thường khi tải dữ liệu từ một dịch vụ, chúng được cung cấp dưới dạng một bảng JSON.

Tuy nhiên, khi truyền dữ liệu này vào một dịch vụ mới, rất ít khi dịch vụ này có thể hiểu được định dạng của bảng JSON.

Tương tự, việc xử lý dữ liệu dưới dạng nền không được dễ dàng, vì mặc dù JSON có thể đọc được bởi con người, nhưng nó không dễ dàng để xử lý.

Vì vậy, tôi muốn chuyển đổi bảng JSON thành bảng Google Sheets. Để làm điều này, tôi đã viết một đoạn mã Google Apps Script để giúp tôi xử lý nó.

Vấn đề – JSON khó đọc cho con người

Dưới đây là một số dịch vụ mà tôi đã sử dụng gần đây cung cấp dữ liệu dưới dạng bảng JSON:

  • API Azure, cung cấp danh sách các dịch vụ mà nó cung cấp.
  • Công cụ xuất bài viết của Ghost, xuất danh sách bài viết, chuyển hướng hoặc các thông tin khác.
  • Công cụ xuất dữ liệu của Spotify, khi tôi quyết định xuất tất cả dữ liệu của mình và sử dụng dịch vụ khác.

Để sử dụng dữ liệu này dưới dạng bảng JSON, tôi phải chuyển đổi chúng thành CSV. Vì vậy, tôi phải chuyển đổi bảng JSON thành bảng, sau đó thành định dạng CSV.

Một bảng JSON là một mảng các đối tượng JSON. Nhìn chung, các đối tượng đều có cùng cấu trúc.

Dưới đây là dữ liệu JSON đã được tải xuống dưới dạng nền. Dữ liệu dưới đây là một mảng các chuyển hướng 301 từ Ghost, nhưng bất kể tính chất của chúng, miễn là chúng là một bảng JSON chứ không phải là một đối tượng. Tôi chỉ cần dán chúng vào bảng tính Google mà không định dạng.

[
[
{
“from”: “/best-looking-motorcycles/”,
“to”: “https://motofomo.com/best-looking-motorcycles-of-2019/“,
“permanent”: true
},
{
“from”: “/most-beautiful-motorcycles-2018/”,
“to”: “https://motofomo.com/best-looking-motorcycles-of-2019/“,
“permanent”: true
},
{
“from”: “/ghost-2-0-vs-wordpress-5-0/”,
“to”: “/ghost-vs-wordpress/”,
“permanent”: true
},
{
“from”: “/shoei-rf-1200-epic-review/”,
“to”: “https://motofomo.com/shoei-rf-1200-review/“,
“permanent”: true
},

]
]

OK, bây giờ chúng ta chuyển sang chuyển đổi chúng thành một bảng để làm việc.

Tableau JSON collé dans une feuille de calcul Google en tant que valeurs

Một điều cần lưu ý: đảm bảo rằng bảng vẫn là một bảng JSON tiêu chuẩn. Dưới đây là một định nghĩa chung về bảng JSON trên W3Schools.

“Bảng JSON” là gì?

Các dịch vụ dữ liệu hiếm khi gửi một đối tượng JSON hoàn chỉnh. Họ chỉ gửi một mảng.

Dưới đây là một số đặc điểm chính của một bảng JSON:

  • Nó bắt đầu và kết thúc bằng ngoặc vuông, “[“, và “]”.
  • Thông thường, tất cả các khóa đều giống nhau. Một số giá trị có thể để trống. Hoặc ít nhất, các khóa đều từ một danh sách hạn chế các khóa có thể.
  • Các giá trị thông thường là chuỗi, số hoặc booleans.

Ví dụ, đây là một ví dụ về một bảng JSON với một số nhân viên.

[
    {
        "Name": "Andrew",
        "Role": "Senior Software Engineer",
        "Start Date": "2012-06-15",
        "Battle Weakness": "Heel"
    },
    {
        "Name": "Bahman",
        "Role": "Very Senior Software Engineer",
        "Start Date": "2014-03-22",
        "Battle Weakness": "Kryptonite"
    },
    {
        "Name": "Carlos",
        "Role": "Underpaid Operations Guy",
        "Start Date": "2010-11-05",
        "Battle Weakness": "Gets bored quickly"
    },
    {
        "Name": "Dewei",
        "Role": "Secretly the CFO",
        "Start Date": "2013-08-19",
        "Battle Weakness": "Extremely tiny"
    }
]

Bây giờ, chúng ta chuyển sang việc sử dụng mã để chuyển đổi một bảng JSON thành bảng.

Mã để chuyển đổi bảng JSON thành bảng

Dưới đây là mã của Google Apps Script để chuyển đổi JSON thành định dạng bảng.

Tôi đã để lại một số dòng gỡ lỗi trong đó, bạn có thể bỏ chú thích để xem xem có vấn đề gì xảy ra.

Thay vì sinh lỗi, tôi đã cho nó trả về lỗi vào Google Sheets để bạn có thể dễ dàng nhìn thấy.

Đây là cách nó hoạt động:

  1. Nó lấy tất cả dữ liệu và ghép chúng thành một chuỗi duy nhất.
  2. Nó phân tích chuỗi này và tạo một đối tượng JSON.
  3. Nó phân tích đối tượng JSON để tạo thành một bảng.
// usage: =JSONtoTable("Tên Bảng")
// Kết quả được đặt trong một bảng từ ô hiện tại
function JSONtoTable(sheetName) {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var sheet;

    if (sheetName) {
        sheet = spreadsheet.getSheetByName(sheetName);

        if (!sheet) {
            return "Không tìm thấy bảng: " + sheetName;
        }
    }

    // Lấy tất cả dữ liệu
    var data = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).getValues();

    // Ghép tất cả các dòng lại với nhau để tạo thành chuỗi JSON đầy đủ
    var jsonString = data.map(row => row.join("")).join("");

    // Phân tích chuỗi JSON để có được đối tượng JSON
    var jsonObject;

    try {
        jsonObject = JSON.parse(jsonString);
    } catch (e) {
        return 'Lỗi phân tích JSON: ' + e;
    }

    // Nếu muốn làm phẳng đối tượng JSON thành một bảng, bạn có thể làm điều đó ở đây
    try {
        var flattenedJson = flattenJson(jsonObject);
        return flattenedJson;
    } catch (e) {
        return 'Lỗi trong quá trình làm phẳng JSON hoặc xác định các giá trị: ' + e;
    }
}

function flattenJson(data) {
    if (!Array.isArray(data) || data.length === 0) {
        return "Dữ liệu đầu vào không phải là một mảng hợp lệ và không rỗng";
    }

    var result = [];

    // Lấy tất cả các khóa trong các đối tượng trong mảng dữ liệu để đảm bảo chúng bao gồm tất cả các trường
    var headers = [...new Set(data.flatMap(Object.keys))];
    result.push(headers);

    data.forEach(function(row) {
        var rowData = [];

        headers.forEach(function(header) {
            rowData.push(row[header] === undefined ? "" : row[header]);
        });

        result.push(rowData);
    });

    return result;
}

Sử dụng mã – Kiểm tra

Trên Google Sheets:

  1. Trên thanh menu, nhấp vào “Extensions”, sau đó chọn “Apps Script”.
  2. Dán đoạn mã trên.
  3. Đặt tên cho nó, ví dụ “JSON to Table”.
  4. Lưu lại.

Sau đó, trên Google Sheets, bạn có thể sử dụng chức năng JSONtoTable().

Tôi đã kiểm tra điều này với một số dữ liệu và bạn có thể sao chép chúng vào đây nếu bạn muốn tự kiểm tra.

Kết luận

Nếu bạn thích điều này, tôi sẽ đánh giá cao một lời cảm ơn hoặc chỉ một câu “xin chào”!

Related posts