キーワード分岐するAI-Studioを、AIクレジットの節約のため、スクリプトに変更を試みました。スクリプトへの変換は、Asana-AIに頼みました。
AI-StudioのAIへのガイダンス:正常に機能します。
- タスクの類似性確認ガイドライン 目的:このガイドラインは、新規タスクの類似性を評価し、適切な対応を行うための手順を定めます。これにより、タスクを分類し、効率的なタスク管理を目指します。
手順:1. 新規タスクの確認: 新規タスクの「名前」と「説明」の内容を詳しく確認してください。2. 含まれる文字列と、下記の「分類キーワード」との類似性を評価します。
分類キーワード:・キーワード安全衛生交通:安全、衛生、災害、ケガ、不休、休業、救急車、消防車 ・キーワード品質:不良、不適合、トラブル、仕損、故障
対応方法:1. 類似性が「安全衛生交通」の場合: カスタムフィールド”連絡事項の区分”を”安全衛生交通”にする 2. 類似性が「品質」の場合: カスタムフィールド”連絡事項の区分”を”品質”にする 3. 類似性が無い場合: カスタムフィールド”連絡事項の区分”を”総務ほか”にし、コメントに理由を記入する
変換したスクリプト:エラーで機能しません。
-
async function run() {
// カスタムフィールドGIDの設定
// 取得方法: プロジェクトのカスタマイズメニュー > フィールド から確認できます
const customFieldGid = “YOUR_CUSTOM_FIELD_GID”;// カテゴリ名とカスタムフィールド選択肢のGIDをマッピング
// 各選択肢のGIDはAPIレスポンスから取得できます
const categoryGidMap = {
“安全衛生交通”: “GID_OF_SAFETY_CATEGORY”,
“品質”: “GID_OF_QUALITY_CATEGORY”,
“総務ほか”: “GID_OF_OTHER_CATEGORY”
};// 分類キーワード定義(優先度順)
const KEYWORDS = {
“安全衛生交通”: [“安全”, “衛生”, “災害”, “ケガ”, “不休”, “休業”, “救急車”, “消防車”, “交通”, “事故”],
“品質”: [“不良”, “不適合”, “トラブル”, “仕損”, “故障”, “クレーム”, “品質”]
};
/**- タスクの類似性を評価し、カスタムフィールドの選択肢GIDを返す関数
- @param {string} taskName タスク名
- @param {string} taskDescription タスクの説明
- @returns {string} マッチしたカテゴリのGID、またはデフォルトのGID
*/
function evaluateTaskSimilarity(taskName, taskDescription) {
// タスク内容を結合
const content = (taskName + " " + (taskDescription || “”));
// 各カテゴリのキーワードとの一致を確認
for (const [category, keywordList] of Object.entries(KEYWORDS)) {
for (const keyword of keywordList) {
if (content.includes(keyword)) {
log(キーワード「${keyword}」が見つかりました。「${category}」に分類します。);
return categoryGidMap[category];
}
}
}
// 一致するキーワードがない場合は、「総務ほか」のGIDを返す
log(“キーワードが見つかりませんでした。「総務ほか」に分類します。”);
return categoryGidMap[“総務ほか”];
}
try {
// タスクデータを取得
const task = await tasksApiInstance.getTask(task_gid);
log("タスク名: " + task.data.name);
// 類似性評価(カスタムフィールドのGIDを取得)
const customFieldOptionGid = evaluateTaskSimilarity(task.data.name, task.data.notes);
// カスタムフィールドを更新
await tasksApiInstance.updateTask(task_gid, {
data: {
custom_fields: {
[customFieldGid]: customFieldOptionGid
}
}
});
// 「総務ほか」に分類された場合はコメントを追加
if (customFieldOptionGid === categoryGidMap[“総務ほか”]) {
await tasksApiInstance.createComment(task_gid, {
data: {
text: “キーワードとの類似性が見つからなかったため、「総務ほか」に分類しました。必要に応じて手動で変更してください。”
}
});
}
log(タスク「${task.data.name}」の区分を更新しました);
} catch (error) {
log("エラーが発生しました: " + error.message);
log("エラー詳細: " + JSON.stringify(error));
}
}
// スクリプトを実行
run();
実行結果は、成功とは書いてありますが、実際はエラーと書いてあるようです。
- タスク名: WBGT31℃【危険】本日(9 / 2)の暑さ指数配信…
キーワード「安全」が見つかりました。「安全衛生交通」に分類します。
エラーが発生しました: Cannot read properties of undefined (reading ‘hasOwnProperty’)
エラー詳細: {“name”:“TypeError”,“message”:“Cannot read properties of undefined (reading ‘hasOwnProperty’)”}
Finished in 403 ms.
スクリプトの修正のアドバイスを頂けないでしょうか?