
【GAS】Google Apps Script 活用事例 Chat GPTと組み合わせて業務効率化を実現する
週2(水木)10-19(休憩1時間)
週3日10-19
※未定※週3日(月火水)10-19(休憩1時間)
※未確定・希望日数:週5日
アルバイトのシフト希望表のようなフリーフォーマットの中から規則性を見出し、整理するという業務を依頼されました。
一度はGASでやろうとしたものの、ひょっとしたらChat GPTの方が上手く出来るかもなぁーと思って依頼したところ想像以上でした。
チャットの履歴
上記のように、フリーフォーマットで記載されたシフト希望表があります。下記のフォーマットを参照にして、表を作成してください。
・希望日数:週●日
・希望勤務曜日:●曜日、●曜日、●曜日
・希望時間:10:00~19:00(休憩あり●時間)
表を作成してください。で終わるプロンプトを投げると、スプレッドシートにそのままコピペ可能な形式で出力してくれます。


紆余曲折を省略しますが、ここから一つのセルにまとめたかったのですが、プロンプト経由では出来ませんでした。
このラストワンマイル、痒い所に手が届かない部分をGASで片付ける事にしました。
コードサンプル
function combineColumnToSingleCell(){
const sheet = SpreadsheetApp.getActiveSheet();
const values = sheet.getDataRange().getValues();
console.log(values);
const header = values.shift();
const newValues = values.map(row => {
const newRow = row.reduce((acc, value, index) => {
acc += `${header[index]}:${value}\n`;
index += 1;
return acc;
}, '');
return [newRow];
});
console.log(newValues);
return newValues
}

僕自身はreduceメソッドがどうも苦手で、Chat GPTにリファクタリングしてもらいました。
このラストワンマイル、痒い所に手が届かない部分をGASで
AIに自分の仕事が代替されてしまうのでは?という恐怖や危機感を持って仕事をしています。
GASを書けても意味はないのか?と自問自答したこともあるります。
Chat GPTに限らずAIを使って生産性を上げつつ、痒い所をRPAやGAS含め、専門的な手段を使ってアウトプットを完成させる。向こう5年から10年は、こういうスタイルで仕事していくことになるのかなと思いました。