從Google的客戶需求單和客戶交付單,定期需要比對兩個表格中的資料,並且在比對後將結果匯入至 Odoo 系統。整個流程包含以下步驟:
資料集結與比對:
整理與輸出交集資料:
function compareAndExportData() {
// Google 表單的試算表 ID 和出貨項目清單的試算表 ID
var formSheetId = '你的表單試算表 ID';
var shippingSheetId = '你的出貨清單試算表 ID';
// 訪問 Google 表單試算表
var formSheet = SpreadsheetApp.openById(formSheetId).getSheetByName('表單回應'); // 確認工作表名稱
var formData = formSheet.getRange(2, 1, formSheet.getLastRow() - 1, formSheet.getLastColumn()).getValues();
// 訪問出貨清單試算表
var shippingSheet = SpreadsheetApp.openById(shippingSheetId).getSheetByName('出貨清單'); // 確認工作表名稱
var shippingData = shippingSheet.getRange(2, 1, shippingSheet.getLastRow() - 1, shippingSheet.getLastColumn()).getValues();
// 比對並集結交集資料
var intersectData = findIntersectingData(formData, shippingData);
// 將交集資料匯出到新試算表
var resultSheet = createNewSheet('比對結果');
exportDataToSheet(intersectData, resultSheet);
// 將資料匯入到 Odoo 系統
importDataToOdoo(intersectData);
}
// 比對兩個試算表的資料,返回交集資料
function findIntersectingData(formData, shippingData) {
var intersect = [];
for (var i = 0; i < formData.length; i++) {
var formRow = formData[i];
for (var j = 0; j < shippingData.length; j++) {
var shippingRow = shippingData[j];
// 比對兩個表格中客戶名稱與訂單號碼(根據需求可調整)
if (formRow[0] == shippingRow[0] && formRow[1] == shippingRow[1]) {
intersect.push([...formRow, ...shippingRow]);
}
}
}
return intersect;
}
// 創建一個新的試算表工作表並返回工作表物件
function createNewSheet(sheetName) {
var spreadsheet = SpreadsheetApp.create(sheetName);
var sheet = spreadsheet.getActiveSheet();
return sheet;
}
// 將資料匯出到試算表
function exportDataToSheet(data, sheet) {
sheet.clear(); // 清除工作表內容
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
// 匯入資料至 Odoo 系統
function importDataToOdoo(intersectData) {
// 這裡需要使用 Odoo API 進行資料匯入(假設已有 REST API 端點)
var url = 'https://你的odoo伺服器/api/endpoint'; // Odoo API 端點
var token = '你的API Token'; // Odoo API Token
for (var i = 0; i < intersectData.length; i++) {
var data = {
customer_name: intersectData[i][0],
order_number: intersectData[i][1],
resolved_issue: intersectData[i][2], // 根據資料列修改字段
shipping_date: intersectData[i][3], // 根據資料列修改字段
};
var options = {
method: 'post',
contentType: 'application/json',
headers: {
'Authorization': 'Bearer ' + token
},
payload: JSON.stringify(data)
};
UrlFetchApp.fetch(url, options);
}
}
compareAndExportData()
函數:
findIntersectingData()
函數來比對兩個表格的交集。importDataToOdoo()
函數將資料匯入到 Odoo 系統中。findIntersectingData()
函數:
intersect
陣列中。createNewSheet()
函數:
exportDataToSheet()
函數:
importDataToOdoo()
函數:
url
和 token
變數為您的 Odoo API 端點和授權 token。findIntersectingData()
中調整比對邏輯以符合您具體的資料格式。