function saveSummitAttachments() {
const DRIVE_FOLDER_ID = 'YOUR_FOLDER_ID_HERE'; // Replace with actual folder ID
const SHEET_NAME = 'Sheet1'; // Or name of your sheet
const QUERY = 'from:phil@internationaltaxlaw.com subject:"[London Summit 2025]" has:attachment';
const folder = DriveApp.getFolderById(DRIVE_FOLDER_ID);
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
const existingRows = sheet.getDataRange().getValues();
// Build a set of existing entries to prevent duplicates
const processedKeys = new Set();
for (let i = 1; i < existingRows.length; i++) {
processedKeys.add(existingRows[i][5] + '|' + existingRows[i][3]); // MessageID|FileName
}
const threads = GmailApp.search(QUERY);
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(message => {
const msgId = message.getId();
const date = message.getDate();
const subject = message.getSubject();
const sender = message.getFrom();
const attachments = message.getAttachments();
attachments.forEach(att => {
const key = msgId + '|' + att.getName();
if (!processedKeys.has(key)) {
const file = folder.createFile(att.copyBlob()).setName(att.getName());
const url = file.getUrl();
sheet.appendRow([
date,
sender,
subject,
att.getName(),
url,
msgId
]);
processedKeys.add(key);
}
});
});
});
}