GAS活用例10選で業務を完全自動化【コピペOK・無料】Google Apps Script実践ガイド

📌 この記事でわかることこの記事では、Google Apps Script(GAS)を使って日々の面倒な作業を自動化する方法を、初心者から中級者までを対象に網羅的に解説します。GASの基礎知識から、コピペしてすぐに使える15種類のサンプルコード、さらにはGASスキルを活かして副業で収入を得るための具体的なロードマップまで、あなたが知りたい情報のすべてをまとめました。実際に私がGASを学び、業務効率

GAS活用例10選で業務を完全自動化【コピペOK・無料】Google Apps Script実践ガイド

PR 本記事はアフィリエイト広告()を含みます。

📌 この記事でわかること
この記事では、Google Apps Script(GAS)を使って日々の面倒な作業を自動化する方法を、初心者から中級者までを対象に網羅的に解説します。GASの基礎知識から、コピペしてすぐに使える15種類のサンプルコード、さらにはGASスキルを活かして副業で収入を得るための具体的なロードマップまで、あなたが知りたい情報のすべてをまとめました。実際に私がGASを学び、業務効率化や副業案件獲得に至った仮想体験談を交えながら、初心者がつまずきやすいポイントや、一歩進んだ応用テクニックも紹介。この記事を読めば、GAS自動化の全体像を掴み、今日からあなたの「時間」を生み出す第一歩を踏み出せます。

📖 Google Apps Script(GAS)とは?無料で使える自動化ツールの正体

Neuro Dive|AI・データサイエンス就労移行支援

📌 Neuro Dive|AI・データサイエンス就労移行支援

厚労省指定 AI・データサイエンス就労移行支援。未経験から AI 人材を目指す。

👉 公式サイトで無料申し込み

Google Apps Script(GAS)は、Googleが提供するクラウドベースのプログラミング言語であり、開発環境です。特別なソフトウェアのインストールは一切不要で、Googleアカウントさえあれば誰でも無料で利用を開始できます。Gmail、スプレッドシート、カレンダーといった日常的に使うGoogleの各種サービスを連携させ、定型業務を自動化することに特化しています。

例えば、「毎朝9時にスプレッドシートの売上データを集計し、関係者にメールで送る」「問い合わせフォームに投稿があったら、即座に担当者へSlack通知する」といった作業を、一度設定するだけで完全に自動で実行させることが可能です。これにより、これまで手作業にかけていた時間を大幅に削減し、より創造的な業務に集中できるようになります。

GASが選ばれる3つの核心的メリット

GASが多くのビジネスパーソンや副業ワーカーに支持される理由は、主に3つのメリットに集約されます。第一に、無料 (条件あり)であること。サーバーの契約や高価なソフトウェアの購入は不要で、Googleアカウント一つで始められる手軽さは最大の魅力です。

第二に、Googleサービスとの強力な連携機能です。スプレッドシートの操作、Gmailの送受信、カレンダーへの予定登録、Googleドライブのファイル管理など、複数のサービスを横断した複雑な自動化処理を、比較的簡単なコードで実現できます。他のツールでは難しい、Googleエコシステム内でのシームレスな連携がGASの真骨頂です。

そして第三に、トリガー機能による完全自動化の実現です。「毎週月曜の朝8時に実行」「スプレッドシートの特定のセルが編集されたら実行」といった、時間やイベントを起点とした自動実行設定(トリガー)が可能です。これにより、PCを起動していなくても、設定した通りにスクリプトが動き続ける「本当の自動化」が完成します。

JavaScriptとの関係性と学習コスト

GASの文法は、Web開発で広く使われているプログラミング言語「JavaScript」に準拠しています。そのため、すでにJavaScriptの知識がある方なら、GAS特有のクラス(SpreadsheetAppGmailAppなど)の使い方を覚えるだけで、すぐにでも開発を始められるでしょう。

プログラミング未経験者にとっても、JavaScriptは比較的学習しやすい言語の一つです。オンライン学習サイトや書籍も豊富に存在するため、基礎から体系的に学ぶ環境が整っています。実際に私も、最初はProgateやドットインストールといったサービスでJavaScriptの基本を学び、その後GASの公式ドキュメントを読み込むことで、約1ヶ月で簡単な自動化ツールを自作できるようになりました。初期の学習コストはかかりますが、得られるリターンは非常に大きいと言えます。

GASでできないこと・限界点も知っておこう

万能に見えるGASにも、無料であるがゆえのいくつかの制限(クォータ)が存在します。例えば、1回のスクリプト実行時間は最大6分(Google Workspace有料アカウントでは30分)に制限されています。大量のデータを処理する場合、この時間内に処理を終える工夫が必要です。

また、1日にAPIを呼び出せる回数やメールを送信できる件数にも上限があります。例えば、Gmail経由のメール送信は1日100通(有料アカウントでは1500通)までです。個人や小規模チームの業務自動化には十分な範囲ですが、大規模なメルマガ配信などには向いていません。これらの制限を理解し、その範囲内で自動化を設計することが、GASを賢く使いこなすための重要なポイントです。

📌 GASで実現できる自動化アイデア大全|カテゴリ別活用マップ

🔧 実際に使ってる開発環境
Mac mini M4 (16GB)
この記事で書いてる内容を 実機 で回してる環境. 同じ ASIN を踏めば同じ構成が再現できる.
Amazon で確認 →
フリーランス案件: join

📌 フリーランス案件: join

フリーランス専門エージェント join|週3〜OK・IT 高単価案件多数

👉 公式サイトで無料申し込み

GASを使えば、あなたのアイデア次第で多種多様な業務を自動化できます。ここでは、代表的な活用例をカテゴリ別に分類し、その難易度と期待できる効果を一覧にまとめました。これから何を自動化したいか考える際の参考にしてください。

カテゴリ 具体的な自動化の例 難易度 主な利用サービス 期待できる効果
メール業務 定期レポートメールの自動送信、問い合わせへの自動返信、特定キーワードを含むメールの自動転送・ラベル付け ★★☆☆☆ Gmail, Spreadsheet メール対応工数の削減、返信漏れの防止
データ集計・管理 複数スプレッドシートのデータを1枚に集約、CSVファイルの自動インポート、売上データのグラフ化、在庫管理 ★★☆☆☆ Spreadsheet, Drive 手作業による集計ミスの撲滅、データ可視化の高速化
フォーム連携 Googleフォーム回答内容を整形してスプレッドシートに記録、回答者へのお礼メール自動送信、Slack/LINEへの即時通知 ★★☆☆☆ Forms, Spreadsheet, Gmail 顧客対応の迅速化、手動転記作業の撤廃
スケジュール管理 スプレッドシートのタスクリストからカレンダーに予定を自動登録、翌日の予定を毎晩メールでリマインド ★★★☆☆ Calendar, Spreadsheet, Gmail 予定登録漏れの防止、タスク管理の効率化
ファイル整理 Gmailの添付ファイルを命名規則に従いGoogleドライブへ自動保存、定期的なフォルダのバックアップ作成 ★★★☆☆ Drive, Gmail ファイル整理の手間削減、重要データの保全
外部API連携 Slack/LINE/Chatworkへの通知、天気予報や為替レートの取得、kintoneやSalesforceとのデータ連携 ★★★★☆ UrlFetchApp, 各種WebAPI 既存ツールとの連携強化、情報収集の自動化
ドキュメント生成 スプレッドシートのデータから請求書や見積書のPDFを自動生成し、指定のメールアドレスへ送付 ★★★★☆ Spreadsheet, Docs, Gmail, Drive 請求書発行業務の大幅な時間短縮
Webスクレイピング 競合サイトの商品価格や株価情報を定期的に収集し、スプレッドシートに記録して価格変動を監視 ★★★★★ UrlFetchApp, Parserライブラリ 市場調査や情報収集の完全自動化

📌 【コピペOK】GAS自動化サンプルコード15選|実践テクニック解説付き

▶ 関連: GASでGmail自動返信

▶ 関連: GAS×スプレッドシート自動化の応用例集

Neuro Dive|AI・データサイエンス就労移行支援

📌 Neuro Dive|AI・データサイエンス就労移行支援

厚労省指定 AI・データサイエンス就労移行支援。未経験から AI 人材を目指す。

👉 公式サイトで無料申し込み

📚 関連記事

ここでは、すぐに使える具体的なサンプルコードを15個紹介します。各コードには、設定方法やカスタマイズのポイントも併記しました。まずは興味のあるものからコピー&ペーストして、実際に動かしてみることから始めましょう。

⚠️ コード利用前の準備

  1. Googleスプレッドシートなどを開き、メニューから「拡張機能」→「Apps Script」を選択してスクリプトエディタを開きます。
  2. 表示されたコード(function myFunction() {})を削除し、以下のサンプルコードを貼り付けます。
  3. コード内の '[email protected]''YOUR_WEBHOOK_URL' などの部分は、ご自身の環境に合わせて書き換えてください。
  4. 保存ボタン(フロッピーディスクのアイコン)を押し、実行ボタン(▶)で動作を確認します。定期実行したい場合は、トリガー(時計のアイコン)を設定します。

【基本編】サンプル1:スプレッドシートのデータを毎朝メールで送信

指定したスプレッドシートの範囲のデータを取得し、整形して毎朝メールで送信します。日次レポートの自動化に最適です。

function sendDailyReport() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('売上データ'); // A1からD10の範囲のデータを取得。範囲は適宜変更してください。 const dataRange = sheet.getRange('A1:D10'); const values = dataRange.getValues();

let mailBody = '【本日の売上レポート】\n\n'; values.forEach(row => { // タブ区切りで1行の文字列に変換 mailBody += row.join('\t') + '\n'; });

const recipient = '[email protected]'; const subject = '【自動送信】' + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ' 売上レポート';

GmailApp.sendEmail(recipient, subject, mailBody); console.log('レポートメールを送信しました。'); }

設定方法:スクリプトエディタの左側メニュー「トリガー」を開き、「トリガーを追加」をクリック。「時間ベースのトリガー」を選択し、「日タイマー」で「午前8時~9時」のように設定すれば、毎朝自動で実行されます。

サンプル2:Googleフォーム回答時に自動でお礼メール送信

問い合わせフォームや申し込みフォームに回答があった瞬間に、回答者へ自動でお礼メールを送ります。顧客満足度の向上に繋がります。

function onFormSubmit(e) { // e.valuesでフォームの回答を配列として取得 const responses = e.values; const timestamp = responses[0]; // 1列目:タイムスタンプ const email = responses[1]; // 2列目:メールアドレス const name = responses[2]; // 3列目:氏名

const subject = 【受付完了】${name}様、お問い合わせありがとうございます; const body = ${name} 様\n\n + この度はお問い合わせいただき、誠にありがとうございます。\n + 以下の内容で受け付けました。\n\n + --------------------\n + お名前: ${name}\n + メールアドレス: ${email}\n + --------------------\n\n + 内容を確認の上、担当者より3営業日以内にご連絡いたします。\n + 今しばらくお待ちくださいませ。\n\n + (このメールはシステムにより自動送信されています);

GmailApp.sendEmail(email, subject, body); }

設定方法:トリガー設定で、「イベントのソースを選択」を「スプレッドシートから」、「イベントの種類を選択」を「フォーム送信時」に設定します。これによりフォームが送信されるたびにこの関数が自動実行されます。

サンプル3:スプレッドシート更新時にSlack通知

特定のシートが編集されたら、その内容を即座にSlackへ通知します。チームでの情報共有を円滑にします。

function notifyUpdateToSlack() { // SlackのIncoming Webhook URLをスクリプトプロパティに設定推奨 const WEBHOOK_URL = 'https://hooks.slack.com/services/YOUR/WEBHOOK/URL';

const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = sheet.getLastRow(); // 最終行のA列からE列までのデータを取得 const newData = sheet.getRange(lastRow, 1, 1, 5).getValues()[0];

const message = { "text": 📊 スプレッドシート「${sheet.getParent().getName()}」が更新されました, "attachments": [{ "color": "#36a64f", "fields": [ { "title": "更新行", "value": String(lastRow), "short": true }, { "title": "更新者", "value": Session.getActiveUser().getEmail(), "short": true }, { "title": "データ内容", "value": newData.join(' | '), "short": false } ] }] };

const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(message) };

UrlFetchApp.fetch(WEBHOOK_URL, options); }

設定方法:トリガー設定で、「イベントの種類を選択」を「変更時」または「編集時」に設定します。SlackのWebhook URLは、Slack側でアプリを追加して取得してください。

サンプル4:Gmailの未読メールを毎日まとめてLINE通知

毎晩、その日の未読メールの件名と送信者をLINE Notifyで通知します。重要なメールの見落としを防ぎます。

function sendUnreadEmailsToLine() { // LINE Notifyで発行したトークンを設定 const LINE_TOKEN = 'YOUR_LINE_NOTIFY_TOKEN';

// 過去24時間以内の未読メールを検索 const query = 'is:unread newer_than:1d'; const threads = GmailApp.search(query);

if (threads.length === 0) { console.log('本日の未読メールはありません。'); return; }

let message = \n📧 本日の未読メール(${threads.length}件); // 未読メールが多すぎると通知が長くなるため、最新5件に絞る threads.slice(0, 5).forEach(thread => { const msg = thread.getMessages()[0]; const subject = msg.getSubject(); const from = msg.getFrom().replace(/<.*>/, '').trim(); message += \n・${subject} (from: ${from}); }); if (threads.length > 5) { message += \n...他${threads.length - 5}件; }

const url = 'https://notify-api.line.me/api/notify'; const options = { method: 'post', headers: { 'Authorization': Bearer ${LINE_TOKEN} }, payload: { message: message } }; UrlFetchApp.fetch(url, options); }

設定方法:時間ベースのトリガーで「日タイマー」を選択し、「午後10時~11時」などに設定します。LINE Notifyのトークンは、LINE Notifyの公式サイトから取得できます。

サンプル5:Googleカレンダーの予定を前日にリマインドメール

Googleカレンダーに登録されている翌日の予定をリストアップし、毎晩メールで自分宛に送信します。

function sendCalendarReminder() { const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1);

// 取得範囲を明日の00:00:00から23:59:59に設定 const startTime = new Date(tomorrow.setHours(0, 0, 0, 0)); const endTime = new Date(tomorrow.setHours(23, 59, 59, 999));

const calendar = CalendarApp.getDefaultCalendar(); const events = calendar.getEvents(startTime, endTime);

if (events.length === 0) { console.log('明日の予定はありません。'); return; }

let body = '【明日の予定リマインダー】\n\n'; events.forEach(event => { const eventStart = event.getStartTime(); const eventEnd = event.getEndTime(); const time = event.isAllDayEvent() ? '終日' : ${Utilities.formatDate(eventStart, 'JST', 'HH:mm')} - ${Utilities.formatDate(eventEnd, 'JST', 'HH:mm')}; body += ■ ${event.getTitle()}\n; body += 時間: ${time}\n; if (event.getLocation()) { body += 場所: ${event.getLocation()}\n; } body += '\n'; });

const myEmail = Session.getActiveUser().getEmail(); GmailApp.sendEmail(myEmail, '明日の予定リマインダー', body); }

設定方法:時間ベースのトリガーで「日タイマー」を「午後9時~10時」などに設定し、毎日実行されるようにします。

サンプル6:スプレッドシートの期限切れタスクに自動で色付け

タスク管理シートなどで、期限日を過ぎた行の背景色を自動で変更します。視覚的にアラートを出すことで、対応漏れを防ぎます。

function highlightExpiredTasks() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('タスク管理'); const today = new Date(); today.setHours(0, 0, 0, 0); // 日付のみで比較するため時間をリセット const lastRow = sheet.getLastRow();

// 2行目から最終行までループ(1行目はヘッダーと仮定) // C列に期限日、E列にステータスが入っていると仮定 const range = sheet.getRange(A2:E${lastRow}); const values = range.getValues(); const backgrounds = range.getBackgrounds();

for (let i = 0; i < values.length; i++) { const dueDate = new Date(values[i][2]); // C列(インデックス2)が期限日 const status = values[i][4]; // E列(インデックス4)がステータス

if (dueDate instanceof Date && dueDate < today && status !== '完了') { // 期限切れかつ未完了のタスクの背景を薄い赤色に変更 for (let j = 0; j < backgrounds[i].length; j++) { backgrounds[i][j] = '#fecaca'; // tailwind red-200 } } else { // それ以外の行は背景色をリセット(白) for (let j = 0; j < backgrounds[i].length; j++) { backgrounds[i][j] = '#ffffff'; } } } range.setBackgrounds(backgrounds); }

設定方法:時間ベースのトリガーで「日タイマー」を設定し、毎日1回実行されるようにします。

サンプル7:外部APIから為替レートを取得してスプレッドシートに記録

無料で使える為替レートAPIを叩き、特定の通貨ペアのレートを毎日スプレッドシートに記録します。FXのデータ分析や海外取引の参考に活用できます。

function fetchAndSaveFxRate() { // 無料で使える為替API (例: ExchangeRate-API) const url = 'https://api.exchangerate-api.com/v4/latest/USD';

try { const response = UrlFetchApp.fetch(url); const data = JSON.parse(response.getContentText());

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('為替レート'); const timestamp = new Date(); const jpyRate = data.rates.JPY; const eurRate = data.rates.EUR;

// データをシートの最終行に追加 sheet.appendRow([timestamp, 'USD/JPY', jpyRate]); sheet.appendRow([timestamp, 'USD/EUR', eurRate]);

console.log(USD/JPY: ${jpyRate}, USD/EUR: ${eurRate} を記録しました); } catch (e) { console.error(APIからのデータ取得に失敗しました: ${e.toString()}); } }

設定方法:時間ベースのトリガーで「日タイマー」を設定し、毎日定時に実行します。

サンプル8:ChatGPT APIと連携してメール文面を自動生成

指定したトピックに基づき、ChatGPT(OpenAI API)を使ってビジネスメールの文面を生成する関数です。メール作成の手間を大幅に削減できます。

function generateEmailWithGpt(topic, recipientName) { // APIキーはスクリプトプロパティに保存すること const OPENAI_KEY = PropertiesService.getScriptProperties().getProperty('OPENAI_KEY'); if (!OPENAI_KEY) { throw new Error('OpenAI APIキーが設定されていません。'); }

const prompt = ${recipientName}様宛のビジネスメールを作成してください。\n要件:\n- 丁寧な言葉遣い\n- トピック:${topic};

const payload = { model: 'gpt-4o-mini', messages: [{ role: 'user', content: prompt }], max_tokens: 500, temperature: 0.7 };

const options = { method: 'post', headers: { 'Authorization': Bearer ${OPENAI_KEY}, 'Content-Type': 'application/json' }, payload: JSON.stringify(payload), muteHttpExceptions: true // APIエラー時もレスポンス内容を確認するため };

const response = UrlFetchApp.fetch('https://api.openai.com/v1/chat/completions', options); const responseCode = response.getResponseCode(); const responseBody = response.getContentText();

if (responseCode === 200) { const json = JSON.parse(responseBody); return json.choices[0].message.content.trim(); } else { console.error(APIエラー: ${responseCode} ${responseBody}); return APIリクエストに失敗しました。詳細はログを確認してください。; } }

// 実行テスト用の関数 function testGenerateEmail() { const topic = '次回の定例会議の日程調整のお願い'; const recipientName = '田中部長'; const generatedText = generateEmailWithGpt(topic, recipientName); console.log(generatedText); }

⚠️ APIキーの管理:OpenAI APIキーのような機密情報は、ほぼ高確率でコード内に直接書き込まないでください。「ファイル」→「プロジェクトのプロパティ」→「スクリプト プロパティ」にキーと値を設定し、PropertiesServiceを使って呼び出すのが安全な方法です。

サンプル9:Driveのファイルを拡張子ごとに自動でフォルダ整理

特定のフォルダ内にあるファイルを、拡張子(.pdf, .jpgなど)に応じて自動的にサブフォルダへ移動させます。散らかったGoogleドライブをきれいに保ちます。

function organizeFilesByExtension() { const sourceFolderId = 'YOUR_SOURCE_FOLDER_ID'; // 整理したいフォルダのID const sourceFolder = DriveApp.getFolderById(sourceFolderId); const files = sourceFolder.getFiles();

while (files.hasNext()) { const file = files.next(); const fileName = file.getName(); const extension = fileName.includes('.') ? fileName.split('.').pop().toLowerCase() : 'no_extension';

let targetFolderName; switch (extension) { case 'jpg': case 'jpeg': case 'png': case 'gif': targetFolderName = '画像'; break; case 'pdf': targetFolderName = 'PDF'; break; case 'doc': case 'docx': targetFolderName = 'Word文書'; break; case 'xls': case 'xlsx': case 'csv': targetFolderName = 'スプレッドシート'; break; default: targetFolderName = 'その他'; }

// 移動先のフォルダが存在するか確認し、なければ作成 let targetFolder; const folders = sourceFolder.getFoldersByName(targetFolderName); if (folders.hasNext()) { targetFolder = folders.next(); } else { targetFolder = sourceFolder.createFolder(targetFolderName); }

// ファイルを移動 file.moveTo(targetFolder); console.log(「${fileName}」を「${targetFolderName}」フォルダに移動しました。); } }

設定方法:YOUR_SOURCE_FOLDER_IDの部分を、整理したいGoogleドライブのフォルダURLの末尾にあるIDに書き換えてください。時間ベースのトリガーで週に1回などに設定すると便利です。

サンプル10:スプレッドシートの複数シートを1つのPDFに統合

スプレッドシート内の複数のシートを選択し、1つのPDFファイルとしてGoogleドライブに保存します。月次レポートの作成などに便利です。

function exportMultipleSheetsAsPdf() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const ssId = ss.getId(); const pdfName = ${ss.getName()}_${Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd')}.pdf;

// PDF化したいシート名のリスト const sheetNamesToExport = ['サマリー', '売上詳細', 'グラフ'];

const sheets = ss.getSheets(); let url_ext = '';

sheets.forEach(sheet => { if (sheetNamesToExport.includes(sheet.getName())) { url_ext += &gid=${sheet.getSheetId()}; } });

const url = https://docs.google.com/spreadsheets/d/${ssId}/export?format=pdf&${url_ext.slice(1)};

const options = { headers: { 'Authorization': Bearer ${ScriptApp.getOAuthToken()} }, muteHttpExceptions: true };

const response = UrlFetchApp.fetch(url, options); const blob = response.getBlob().setName(pdfName);

// 保存先フォルダを指定 const folder = DriveApp.getFolderById('YOUR_TARGET_FOLDER_ID'); folder.createFile(blob); console.log(PDF「${pdfName}」を作成しました。); }

設定方法:sheetNamesToExportの配列に、PDFに含めたいシート名を正確に入力します。YOUR_TARGET_FOLDER_IDにはPDFを保存したいGoogleドライブのフォルダIDを指定します。

サンプル11:Webスクレイピングで特定サイトの情報を取得

指定したWebサイトから特定の情報を抽出し、スプレッドシートに記録します。ここでは例として、あるページのタイトルを取得します。(※対象サイトの利用規約を必ず確認してください)

function scrapeWebsiteTitle() { const url = 'https://www.google.com/'; // 取得したいサイトのURL

try { const response = UrlFetchApp.fetch(url); const html = response.getContentText('UTF-8');

// 正規表現でタグの中身を抽出 const titleMatch = html.match(/(.*?)<\/title>/); const title = titleMatch ? titleMatch[1] : 'タイトル取得失敗';

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('スクレイピング結果'); sheet.appendRow([new Date(), url, title]); console.log(取得したタイトル: ${title});

} catch (e) { console.error(スクレイピングに失敗しました: ${e.toString()}); } }

⚠️ スクレイピングの注意点:Webスクレイピングは、対象サイトのサーバーに負荷をかける行為です。実行する際は、サイトの利用規約(Terms of Service)でスクレイピングが許可されているか必ず確認し、許可されている場合でも、トリガー設定を数分おきにするなど、過度な頻度でのアクセスは避けてください。

サンプル12:Gmailの添付ファイルをDriveに自動保存

特定の条件(送信者や件名など)に一致するメールに添付されているファイルを、指定したGoogleドライブのフォルダに自動で保存します。

function saveAttachmentsToDrive() { const query = 'from:[email protected] subject:請求書 has:attachment newer_than:2d'; const folderId = 'YOUR_INVOICE_FOLDER_ID'; const folder = DriveApp.getFolderById(folderId);

const threads = GmailApp.search(query); threads.forEach(thread => { const messages = thread.getMessages(); messages.forEach(message => { // 未処理のメールのみを対象とする(スターを付けて管理) if (message.isStarred()) return;

const attachments = message.getAttachments(); attachments.forEach(attachment => { // 同じ名前のファイルが存在しない場合のみ保存 if (folder.getFilesByName(attachment.getName()).hasNext() === false) { folder.createFile(attachment); console.log(添付ファイル「${attachment.getName()}」を保存しました。); } }); // 処理済みの目印としてスターを付ける message.star(); }); }); }

📖 関連記事

▼ この記事に関連するおすすめサービス ▼

📚 Amazon - 副業・ビジネス書籍Amazon で見る >

Read more

マネーフォワード クラウド確定申告 vs freee会計 2026|副業・個人事業主はどっちを選ぶ

マネーフォワード クラウド確定申告 vs freee会計 2026|副業・個人事業主はどっちを選ぶ

PR 本記事はアフィリエイト広告(ラボル、トップ・マネジメント、ココナラ、ポイントインカム、FinancialAcademy)を含みます。 副業を始めて利益が出てくると、次に立ちはだかるのが確定申告という壁です。会社員として給与をもらいながら副業でも稼いでいる人、あるいは個人事業主として独立した人にとって、毎年の確定申告は避けて通れません。そこで多くの人が検討するのが、クラウド会計ソフトの導入です。 クラウド会計ソフトの代表格といえば、マネーフォワード クラウド確定申告とfreee会計の2つ。どちらも国産で、副業会社員から個人事業主まで幅広く使われています。ただ、いざ選ぶとなると「結局どっちがいいの?」という疑問が湧いてくるはずです。 この記事では、両者を料金・使いやすさ・簿記知識の要否・連携機能・インボイスや電子帳簿保存法への対応・サポートなど、複数の軸で中立的に比較します。一方を押し売りするのではなく、「こういう人にはマネーフォワード、こういう人にはfreee」とタイプ別に整理し、あなたが自分で納得して選べる状態を目指します。なお、税制や手続きの最新情報は変動するため、最終的

By tsuyoshi
Python 音声処理 / Audio AI TOP10 完全比較2026|librosa vs Whisper vs torchaudio

Python 音声処理 / Audio AI TOP10 完全比較2026|librosa vs Whisper vs torchaudio

PR 本記事はアフィリエイト広告(XServer クラウドPC、XServer VPS for Windows Server、ABLENETストレージ、シンクラウドデスクトップ for FX、ココナラ)を含みます。 Python音声処理/Audio AI TOP10 完全比較2026|librosa vs Whisper vs torchaudio 2026年現在、音声AI技術は私たちの生活とビジネスに深く浸透しています。スマートスピーカーへの指示、オンライン会議の自動議事録作成、ポッドキャストの文字起こし、そしてカスタマーサポートの自動応答システムなど、その応用範囲は日々拡大し続けています。この技術革新の中心にあるのが、Pythonとその豊富な音声処理ライブラリです。 かつては専門的な知識と高価な機材が必要だった音声分析や認識が、今やオープンソースのライブラリを使うことで、個人の開発者でも手軽に、かつ高精度に実現できるようになりました。特に、音声分析の定番であるlibrosa、驚異的な精度で音声認識の世界を変えたOpenAIのWhisper、そしてPyTorchエコシステムの

By tsuyoshi
OCR Python TOP10 完全比較2026|Tesseract vs PaddleOCR vs EasyOCR

OCR Python TOP10 完全比較2026|Tesseract vs PaddleOCR vs EasyOCR

PR 本記事はアフィリエイト広告(XServer クラウドPC、XServer VPS for Windows Server、ABLENETストレージ、シンクラウドデスクトップ for FX、ココナラ)を含みます。 2026年現在、デジタルトランスフォーメーション(DX)は企業の競争力を左右する必須の経営戦略となりました。その中核を担うテクノロジーの一つが、紙媒体や画像データから文字情報を自動で読み取る「OCR(Optical Character Recognition:光学文字認識)」です。特に、豊富なライブラリと機械学習エコシステムを持つプログラミング言語Pythonを活用したOCR開発は、業務自動化やデータ活用の現場で急速に普及しています。 しかし、いざPythonでOCRを実装しようとすると、「Tesseract、PaddleOCR、EasyOCR、一体どれを使えばいいのか?」「クラウドAPIとオープンソース、どちらが自社の要件に合っているのか?」「精度が出ないが、どう対策すればいいのか?」といった数多くの疑問に直面します。 本記事は、automationjp.comのプ

By tsuyoshi
【完全保存版】ふるさと納税2026年最新ガイド|年収別上限額・おすすめ自治体・ワンストップ特例の使い方

【完全保存版】ふるさと納税2026年最新ガイド|年収別上限額・おすすめ自治体・ワンストップ特例の使い方

ふるさと納税は、年間2,000円の自己負担で全国の自治体に寄付し、その寄付額の30%相当の返礼品を受け取れる、日本で最も人気の節税×お得制度です。2024年度の利用者は約950万人、寄付総額は約1兆1,000億円規模に拡大。一方、制度を「なんとなく」使っている人も多く、上限額を超えた寄付をしてしまったり、ワンストップ特

By tsuyoshi
runtime sweep for hard-coded #4b5563 / #cc1062 --> belt-and-braces runtime sweep (CSS does most of the work) --> belt-and-braces runtime sweep (CSS does most of the work) -->