![見出し画像](https://assets.st-note.com/production/uploads/images/139046722/rectangle_large_type_2_64717326edc8c87bf22a07bead53ca7f.png?width=1200)
GmailをObsidianに保存
Gmail を Obsidian に保存するには?に悩み、以下のような結論になりました。ちなみに、私の技量はというと、Google Apps Script を自分で作成するとか、無理無理、絶対無理、な感じです。なので、将来同じ轍を踏まないように、備忘録的な感じで書いておきます。
Gmail のアドオンを作成
メールの内容を Markdown 形式に変換する
メールの添付ファイルがリンクされるように、最後に「 ![[ファイル名]] 」を記入する
Markdown 形式のファイルと、メールの添付ファイルを、Google Driveに保存
Google Drive に保存された Markdown のファイルとメールの添付ファイルを、Obsidian にドラッグして投げる。
Google Apps Script
90%は Claude に作ってもらいました。
ただし、真っ白からはダメだったので、以下のページのbuildAddOn関数のスクリプトを参考に作ってね!って感じです。
コード.gs
プロジェクトを作成すると最初に「コード.gs」が開いているので、プロジェクトの名前を変更し、コードを書く。
![](https://assets.st-note.com/img/1714474031879-njTTiiejPB.png?width=1200)
// コード.gs
function buildAddOn(e) {
var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
var messageId = e.messageMetadata.messageId;
var message = GmailApp.getMessageById(messageId);
var conversionResult = convertMessageToMarkdown(message);
var resultText = conversionResult ? "Markdownへの変換が完了しました。" : "変換中にエラーが発生しました。";
var resultWidget = CardService.newTextParagraph()
.setText(resultText);
var section = CardService.newCardSection()
.addWidget(resultWidget);
var card = CardService.newCardBuilder()
.setHeader(CardService.newCardHeader().setTitle("Markdown変換結果"))
.addSection(section)
.build();
return [card];
}
function convertMessageToMarkdown(message) {
// markdownファイルを保存するGoogle ドライブのフォルダID
var folderId = "Google ドライブのフォルダID";
var subject = message.getSubject();
var body = message.getBody();
var date = message.getDate();
var attachments = message.getAttachments();
// メール本文をmarkdownに変換
var markdown = convertHtmlToMarkdown(body);
// 添付ファイル名を追加
if (attachments.length > 0) {
markdown += "\n\n";
for (var i = 0; i < attachments.length; i++) {
var attachmentName = attachments[i].getName();
markdown += "![[" + attachmentName + "]]\n";
}
}
// ファイル名の生成
var fileName = subject + "_" + Utilities.formatDate(date, "JST", "yyyyMMdd_HHmmss") + ".md";
// markdownをGoogle ドライブに保存
var folder = DriveApp.getFolderById(folderId);
folder.createFile(fileName, markdown);
// 添付ファイルをGoogle ドライブに保存
for (var i = 0; i < attachments.length; i++) {
var attachmentBlob = attachments[i].copyBlob();
folder.createFile(attachmentBlob);
}
return true;
}
function convertHtmlToMarkdown(html) {
// HTMLをmarkdownに変換するための関数
// 必要に応じて変換ロジックを追加・修正してください
// 例: シンプルなHTMLタグの除去
var markdown = html.replace(/<[^>]+>/g, "");
// 「-」が5個以上ある行を"-----"に変更し、必要に応じて改行を追加
markdown = markdown.replace(/^(-{5,})$/gm, function(match, p1) {
var previousLine = markdown.slice(0, markdown.indexOf(match)).trim();
if (previousLine !== "") {
return "\n-----";
}
return "-----";
});
// 「=」が5個以上ある行を"-----"に変更し、必要に応じて改行を追加
markdown = markdown.replace(/^(={5,})$/gm, function(match, p1) {
var previousLine = markdown.slice(0, markdown.indexOf(match)).trim();
if (previousLine !== "") {
return "\n-----";
}
return "-----/";
});
return markdown;
}
プロジェクトの設定(マニフェスト)
「appsscript.json」マニフェスト ファイルをエディタで表示する、にチェック。
![](https://assets.st-note.com/img/1714474238644-v1ZowduyDF.png?width=1200)
エディタに戻ると、「appsscript.json」が作成されて/いるので、以下を記述する。
![](https://assets.st-note.com/img/1714474401945-5u7Du6nYi5.png?width=1200)
{
"timeZone": "Asia/Tokyo",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"webapp": {
"executeAs": "USER_DEPLOYING",
"access": "MYSELF"
},
"oauthScopes": [
"https://mail.google.com/",
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/drive"
],
"gmail": {
"name": "to Markdown",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/label_googblue_24dp.png",
"contextualTriggers": [
{
"unconditional": {},
"onTriggerFunction": "buildAddOn"
}
],
"openLinkUrlPrefixes": [
"https://mail.google.com/"
],
"primaryColor": "#FF0000",
"secondaryColor": "#0000ff"
},
"urlFetchWhitelist": [
"https://script.google.com/"
]
}
プロジェクトの設定(GSPプロジェクト)
GCPプロジェクトは、最初に作らなければならないのかもです。私はきっと、何かで昔に作ってた感じでした。その辺は調べてみてください。
「プロジェクトを変更」をクリック
![](https://assets.st-note.com/img/1714474751379-jI2vLLlLTN.png?width=1200)
「こちら」をクリック。
![](https://assets.st-note.com/img/1714474873074-B2nLiKlZsQ.png?width=1200)
プロジェクトの番号をコピー
![](https://assets.st-note.com/img/1714474972507-OXPJX6cpXw.png?width=1200)
プロジェクトの番号を貼り付けて、「プロジェクトを設定」をクリック。
![](https://assets.st-note.com/img/1714475090264-SO0VvbSSKU.png?width=1200)
ここでOAuth認証が何たらと言われるかもしれない。以下を参考にさせてもらいました。
GSPプロジェクトの設定
エラーで実行できなかったので、Gmail と Google Drive のAPIが必要なのかな?と、以下のページで検索して、「Gmail API」と「Google Drive API」を有効にしました。
アドオンのインストール
再び、Google Apps Scriptの画面。
右上の「デプロイ」から「新しいデプロイ」をクリックし、「アドオン」を選択して、「デプロイ」をクリック。
![](https://assets.st-note.com/img/1714476210737-xtjD5Os71u.png?width=1200)
もう一度、右上の「デプロイ」から「デプロイをテスト」をクリックし、「インストール」をクリック。
![](https://assets.st-note.com/img/1714476312491-Nry81WDsPB.png?width=1200)
Gmailのアドオン
Gmailを開くとアドオンができているので、メール開いてクリックすると、Google Drive に保存される。
![](https://assets.st-note.com/img/1714476422086-x9JUYAiPNK.png?width=1200)
この記事が気に入ったらサポートをしてみませんか?