1 回答

TA貢獻1786條經驗 獲得超13個贊
您想將 CSV 數據和 XLSX 數據附加到活動電子表格中的特定選項卡。
您想檢索帶有 gmail 特定標簽的電子郵件。
您想使用 Google Apps 腳本來實現這一點。
如果我的理解是正確的,這個答案怎么樣?請將此視為幾個答案之一。
改裝要點:
可以直接從 CSV 文件中檢索數據。但是對于 XLSX 文件,需要將其轉換為 Google 電子表格并從轉換后的電子表格中檢索數據。
XLSX 文件通過文件轉換為 Google 電子表格:插入 Drive API。
為了將數據附加到特定選項卡,在此修改中,我使用了
getSheetByName()
和getLastRow()
。為了檢索帶有特定標簽的電子郵件,我使用了
label:###label###
.
修改后的腳本:
請按如下方式修改您的腳本。在運行腳本之前,請在高級 Google 服務中啟用 Drive API。. 并將標簽名稱設置為sheetName
. 并將搜索查詢設置為GmailApp.search("from:###email### label:###label###")
。###email###
和###label###
分別是電子郵件地址和標簽。
function importCSVFromGmail() {
var sheetName = "Sheet1"; // Please set the tab name you want to append the data.
var threads = GmailApp.search("from:###email### label:###label###"); // Please set here.
var messages = threads[0].getMessages();
var message = messages[messages.length - 1];
var attachment = message.getAttachments()[1];
// attachment.setContentTypeFromExtension(); // This might be required for your situation.
var data = [];
if (attachment.getContentType() == MimeType.CSV) {
data = Utilities.parseCsv(attachment.getDataAsString(), ",");
} else if (attachment.getContentType() == MimeType.MICROSOFT_EXCEL || attachment.getContentType() == MimeType.MICROSOFT_EXCEL_LEGACY) {
var tempFile = Drive.Files.insert({title: "temp", mimeType: MimeType.GOOGLE_SHEETS}, attachment).id;
data = SpreadsheetApp.openById(tempFile).getSheets()[0].getDataRange().getValues();
Drive.Files.trash(tempFile);
}
if (data.length > 0) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getRange(sheet.getLastRow() + 1, 1, data.length, data[0].length).setValues(data);
}
}
添加回答
舉報