先日の某セミナーで、「ChatGPTで元のソースコードから仕様書を作る」と聞いたので、試してみました。
素晴らしい、自分で作るレベルを超えてます。
新しいことにチャレンジしてのプログラム開発は試行錯誤的にならざるをえない。
そのため、事前に設計書・仕様書は、ホボ作らない。
かといって、コードが完成してから仕様書をわざわざ作るのはつまらない。
そこで ChatGPTに頼んでしまえ! という趣旨です。
目的、説明の章立てなど、上手いものですね、感心至極です。
なお ソースコードも、ChatGPTで作ったものです。
完成した仕様書 ▼=====(見栄えだけ御覧ください)=======
目的
このスクリプトは、指定されたMarkdownテキストをもとに、日報をGoogleドキュメントとして自動生成し、特定のフォルダに保存することを目的としています。Markdown形式のテキストがGoogleドキュメントに変換され、Googleカレンダーのイベント情報を基に生成されたことを注記として追加します。
機能概要
- 引数として渡されたMarkdownテキストを基に日報を作成する。
- 日報は「日報_YYYY-MM-DD」という名前でGoogleドキュメントとして生成される。
- 特定のメールアドレスの場合、ドキュメントは指定のGoogleドライブフォルダに移動される。
- 最終的に生成されたGoogleドキュメントのURLを返す。
各機能の詳細説明
1. 関数: createDailyReportWithMarkdown(markdownText)
この関数は日報を作成し、Markdown形式のテキストをGoogleドキュメントに変換します。主な手順は以下の通りです:
- 引数: markdownText
- この引数には、生成する日報の内容がMarkdown形式で渡されます。
- 引数が空であれば、デフォルト値として「testAAA」が設定されます。
- Googleカレンダーイベントの注記
- 引数のMarkdownテキストに、Googleカレンダーの本日イベントを基に生成したことを示す注記が自動的に追加されます。
- 日付取得およびフォーマット
- new Date()で今日の日付を取得し、formatDate()関数を使って「YYYY-MM-DD」形式にフォーマットします。
- Googleドキュメント作成
- DocumentApp.create()でドキュメントが生成され、ドキュメントの本文に引数で渡されたMarkdownテキストが設定されます。
- メールアドレスの確認
- cmG_getEmilAdrs()関数で取得したメールアドレスが*****の場合、作成したドキュメントを特定のGoogleドライブフォルダ(ID: *******)に移動します。
- ログ出力と結果の返却
- 生成されたドキュメントのURLがログに出力され、最終的にそのURLが返却されます。
2. 関数: formatDate(date)
この関数は、createDailyReportWithMarkdown()で取得した日付を「YYYY-MM-DD」形式にフォーマットします。
- 引数: date
- Dateオブジェクトを受け取り、年、月、日を抽出します。
- フォーマット
- 年、月、日をそれぞれ取り出し、2桁の数値に整形してから、「YYYY-MM-DD」という形式で文字列として返します。
エラー処理
- 引数markdownTextが未定義または空の場合、'testAAA'というデフォルトのテキストが設定されます。
想定される使い方
このスクリプトは、日報を簡単に自動生成し、指定されたGoogleドライブフォルダに保存する場合に利用されます。特にGoogleカレンダーの情報を基に自動生成される点が特徴で、日報作成の手間を省くことができます。
完成した仕様書 ▲ ここまで============
### ▼ 元の依頼
##以下の ##コード から、日本語の仕様書を作ってください。
仕様書とは、コード作成者以外の人がコードの内容を理解できる文書です。
##コード
function createDailyReportWithMarkdown(markdownText) {
markdownText += '\n\n※本資料は、Googleカレンダーの本日イベントを基にChatGPTで生成しています。'
// 今日の日付を取得し、YYYY-MM-DD形式にフォーマット
const today = new Date();
const formattedDate = formatDate(today);
const documentName = `日報_${formattedDate}`;
// Googleドキュメントを作成
const doc = DocumentApp.create(documentName);
const body = doc.getBody();
// MarkdownテキストをGoogleドキュメントに貼り付け
body.setText(markdownText);
let email = cmG_getEmilAdrs()
if(email == 'mi***@***'){
// myFolder (name:'DayReport')へ移動する
const myFolder = '1**********';
let folder = DriveApp.getFolderById(myFolder);
let fileID = doc.getId();
let file = DriveApp.getFileById(fileID);
file.moveTo(folder);
}
// GoogleドキュメントのURLをログに出力
Logger.log('Document URL: ' + doc.getUrl());
return 'Document URL: ' + doc.getUrl();
}
function formatDate(date) {
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return `${year}-${month}-${day}`;
}