賃貸 3LDK 66㎡に住んでいますにっこり
わたし: 40代 雑貨大好き会社員

夫: 早起きが得意なフリーランス
息子: 5歳 トミカと路線図大好き

 

現在年収300万。500万を目指したい!

 

 

★年収遍歴はこちら

 

職業訓練関連ブログ

こんにちは♪

 

公式LINEなど担当していると、プレゼントにAmazonギフトカードを送付する業務とかありませんか?

私は広報業務で、1週間に100件ほどEmailタイプのギフト券を購入しています。

 

AmazonギフトカードのURLって一覧で届くわけではなく、1通ずつURLが送付されるんですよね驚き

 

↑この黄色い【アカウントに登録する】をクリックしてURLを1件ずつ取得します。100名の人に贈りたいとすると×100回分・・・

同じURLを送るミスは絶対できないのでどうにか間違いのなく効率化しないと大変すぎる・・・無気力

 

 

 

 

 AmazonギフトカードURLをGoogle Apps Scriptで自動取得してスプレッドシート に管理

 

そこでChat GPTに相談して、Gmailに届くAmazonギフトカードのURLを自動取得し、Googleスプレッドシートに整理するスクリプトを作成してみました指差し

このスクリプトを活用して、ギフトカードの受信日時、URL、取得日時を自動記録し管理できています✨

 

 

 スクリプトの内容

✅ Gmailから特定の件名のメールを検索
✅ メール本文からAmazonギフトカードのURLを抽出
✅ 受信日順にソートしてスプレッドシートに保存
 

📌 導入メリット
✔️ 手作業ゼロでURLを取得!
✔️ ギフトカードの管理が一目でわかる!
✔️ ミスなく正確に記録できる!
 

📝 導入手順
1️⃣ スプレッドシートを作成し、シート名を「Amazonギフトカード」に変更


2️⃣ Google Apps Script(GAS)を開き、スクリプトを貼り付け


3️⃣ 件名をコピペしてくださいのところは、「○○ 様からAmazonギフトカードが届きました!」の件名をコピペ


4️⃣ スクリプトを実行し、自動でURLを取得!



 

私が使用しているスクリプト

 

function extractGiftCardUrls() {

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Amazonギフトカード");

if (!sheet) {

Logger.log("シートが見つかりません。");

return;

}

 

const query = 'subject:" メールの件名をコピペしてください"'; // 件名をコピペしてください

const threads = GmailApp.search(query);

if (threads.length === 0) {

Logger.log("該当するメールが見つかりませんでした。");

return;

}

 

// 既存のURLを取得(シートにデータがある場合のみ)

let existingUrls = [];

if (sheet.getLastRow() > 1) {

existingUrls = sheet.getRange(2, 2, sheet.getLastRow() - 1, 1).getValues().flat();

}

 

const urls = [];

 

threads.forEach(thread => {

thread.getMessages().forEach(message => {

const htmlBody = message.getBody();

const receivedDate = message.getDate();

const regex = /¥100[^\n]*?(https?:\/\/[^\s]+)(?=.*アカウントに登録する)/g;

let match;

 

while ((match = regex.exec(htmlBody)) !== null) {

if (!existingUrls.includes(match[1])) { // 既存のURLと重複しない場合

urls.push({ url: match[1], date: receivedDate });

}

}

});

});

 

if (urls.length > 0) {

// 受信日が古い順にソート

urls.sort((a, b) => a.date - b.date);

 

// 最後の行を取得

const lastRow = Math.max(sheet.getLastRow(), 1); // 最低でも1行目を確保

 

// 新しいデータをシートに追加

urls.forEach((item, index) => {

const newRow = lastRow + index;

sheet.getRange(newRow + 1, 1).setValue(Utilities.formatDate(item.date, Session.getScriptTimeZone(), "yyyy/MM/dd HH:mm:ss"));

sheet.getRange(newRow + 1, 2).setValue(item.url);

});

 

SpreadsheetApp.flush();

Logger.log(`${urls.length} 件のURLを追加しました。`);

} else {

Logger.log("新しいURLは見つかりませんでした。");

}

}

 

改善点などありそうですが、何度かコードを修正してとりあえずこれでURL取得地獄からは抜け出せました昇天

 

 

​必要なページを一括オープン

 

 

 

  

PC作業のお供

 

 

Google Apps Scriptの勉強に読んでいる本