Open3
GASからGeminiに動画の議事録作成をお願いする。
![ようかん](https://res.cloudinary.com/zenn/image/fetch/s--QRnWd5SD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/35040c338d.jpeg)
Meetで録画→GoogleDriveに保存→GASで録画を取得し、Geminiに投げて議事録作成がやりたい。
Geminiに議事録作成をお願いする場合はあらかじめFile APIを使って動画をアップロードしてあげると良い
(直接アップロードする方法もあるが、動画場合だけ何故かうまくいかなかった)
FileAPIにリクエストを投げるところまでは以下Scrap済み
![ようかん](https://res.cloudinary.com/zenn/image/fetch/s--QRnWd5SD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/35040c338d.jpeg)
動画をアップロード後、アップロードされたurlをinputに入れる。
アップロード直後だと、処理中でこけるので、10秒ほど待った方が良さそう。
/**
* Gemini APIを呼び出して文字起こしまたは要約を行う
* @param {string} input 入力(ファイルURI)
* @return {string} API応答
*/
function callGeminiAPI(input) {
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro:generateContent?key=${GEMINI_API_KEY}`;
let payload;
{
payload = {
'contents': [{
"role": "USER",
"parts": [
{
"fileData": {
"mimeType": 'video/mp4',
"file_uri": input
},
},
{
text: '会議の議事録動画です。ここから会話の内容を文字起こしして、記録してください。'
}
],
}]
};
const options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload),
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
const responseJson = JSON.parse(response.getContentText());
console.log(responseJson)
return responseJson.candidates[0].content.parts[0].text;
}
![ようかん](https://res.cloudinary.com/zenn/image/fetch/s--QRnWd5SD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/35040c338d.jpeg)
無事議事録を作成してくれるようになりました