| 項目 | 内容・詳細 |
| システム名称 | m4a音声 → Gemini API → スプレッドシート 完全自動連携GAS |
| 全体の処理フロー | 1. Driveフォルダへ音声保存 → 2. GASが監視・取得 → 3. Base64変換 → 4. Gemini API送信 → 5. 議事録生成 → 6. スプレッドシート保存 |
| 主要機能のポイント | 完全自動化(トリガー実行)、重複処理防止(ファイル名チェック)、セキュリティ確保(ScriptPropertiesによる鍵管理) |
| 必要な設定情報 (Key) | GEMINI_API_KEY、FOLDER_ID(音声保存用)、SHEET_ID、SHEET_NAME |
| GASメイン処理 | processAudioFiles():フォルダ内の未処理m4aファイルを抽出し、議事録作成・保存プロセスを回す中核関数 |
| AIプロンプト内容 | 要点、決定事項、次のアクション(担当・内容・期限)、会議概要を構造化して出力するよう定義 |
| 保存データ構成 | スプレッドシートの各列に 日時、ファイル名、議事録本文 を自動追加 |
| 自動化の設定 | GASの時間主導型トリガー(例:10分おき)で autoProcess 関数を実行するように設定 |
| 運用イメージ | スマホで録音してDriveに放り込むだけで、数分後にはシートに整理された議事録が届く状態 |
プロンプト
「m4a音声 → 自動議事録 → スプレッドシート」
を 完全自動化したGAS(完成版) を作って
scriptプロパティから機密情報は読み取って
音声をGEMINIに渡し議事録を作成
AI作成
以下は
「m4a音声 → Gemini → 議事録 → スプレッドシート」
を 完全自動化するGAS完成版 です。
ポイントは 機密情報は Script Properties から取得 する設計です。
全体構成(重要)
処理の流れ
① Driveフォルダにm4aを保存
↓
② GASがフォルダ監視
↓
③ 音声をBase64化
↓
④ Gemini APIへ送信
↓
⑤ 議事録生成
↓
⑥ スプレッドシート保存
↓
⑦ 処理済みファイルはスキップ
重要ポイント
- 完全自動
- 重複処理防止
- ScriptPropertiesで鍵管理
- トリガーで定期実行
① 完成GASコード
// =============================
// ScriptProperties取得
// =============================
function getConfig() {
const props = PropertiesService.getScriptProperties();
return {
apiKey: props.getProperty("GEMINI_API_KEY"),
folderId: props.getProperty("FOLDER_ID"),
sheetId: props.getProperty("SHEET_ID"),
sheetName: props.getProperty("SHEET_NAME") || "議事録"
}
}
// =============================
// メイン処理
// =============================
function processAudioFiles() {
const config = getConfig()
const folder = DriveApp.getFolderById(config.folderId)
const files = folder.getFiles()
while (files.hasNext()) {
const file = files.next()
const name = file.getName()
if (!name.endsWith(".m4a")) continue
if (isProcessed(name, config)) {
continue
}
const transcript = createMinutes(file, config)
saveToSheet(name, transcript, config)
}
}
// =============================
// Geminiで議事録作成
// =============================
function createMinutes(file, config) {
const blob = file.getBlob()
const base64 = Utilities.base64Encode(blob.getBytes())
const payload = {
contents: [
{
parts: [
{
inlineData: {
mimeType: "audio/mp4",
data: base64
}
},
{
text: `
会議音声を議事録化してください
出力形式
【要点】
・
【決定事項】
・
【次のアクション】
担当:
内容:
期限:
【会議概要】
`
}
]
}
]
}
const options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload)
}
const url =
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=" +
config.apiKey
const res = UrlFetchApp.fetch(url, options)
const json = JSON.parse(res.getContentText())
return json.candidates[0].content.parts[0].text
}
// =============================
// スプレッドシート保存
// =============================
function saveToSheet(fileName, text, config) {
const ss = SpreadsheetApp.openById(config.sheetId)
const sheet = ss.getSheetByName(config.sheetName)
sheet.appendRow([
new Date(),
fileName,
text
])
}
// =============================
// 重複チェック
// =============================
function isProcessed(fileName, config) {
const ss = SpreadsheetApp.openById(config.sheetId)
const sheet = ss.getSheetByName(config.sheetName)
const data = sheet.getDataRange().getValues()
for (let i = 1; i < data.length; i++) {
if (data[i][1] == fileName) {
return true
}
}
return false
}
// =============================
// ScriptProperties設定
// =============================
function setProperties() {
const props = PropertiesService.getScriptProperties()
props.setProperty("GEMINI_API_KEY", "ここにAPIキー")
props.setProperty("FOLDER_ID", "ここにフォルダID")
props.setProperty("SHEET_ID", "ここにシートID")
props.setProperty("SHEET_NAME", "議事録")
}
// =============================
// 自動実行
// =============================
function autoProcess() {
processAudioFiles()
}
② ScriptProperties設定
GASメニュー
プロジェクト設定
↓
スクリプトプロパティ
追加
| KEY | VALUE |
|---|---|
| GEMINI_API_KEY | Gemini APIキー |
| FOLDER_ID | 音声保存フォルダ |
| SHEET_ID | スプレッドシートID |
| SHEET_NAME | 議事録 |
③ スプレッドシート構成
| 日時 | ファイル名 | 議事録 |
|---|
④ Drive構成
GoogleDrive
↓
議事録音声フォルダ
↓
meeting1.m4a
meeting2.m4a
⑤ 自動実行(重要)
GASトリガー
トリガー追加
↓
autoProcess
↓
時間主導
↓
10分毎
すると
音声を入れるだけで議事録完成
完成イメージ
スマホ録音
↓
Driveアップ
↓
GAS
↓
Gemini
↓
議事録生成
↓
スプレッドシート保存

