Garoon WFで最終承認前に一度だけkintoneにデータを送信したい

お世話になっております。
現在、Garoonのワークフローを使用しており、最終承認前に一度だけkintoneにデータを送信する仕組みを作成したいと考えています。


背景

弊社ではトヨクモ社の「プリントクリエイター」を利用しており、最終承認時には「kintoneのデータ」を基にPDFを生成し、それをGaroonのWFに添付する運用を行っています。
そのため、Garoon WFの最終承認前にkintoneにデータを送信する必要があります


現在の課題

以下のコードをチャットGPTに流しながら作成しましたが、「一度だけデータを送信する」ということが機能しておらず、最終承認者以外のkintoneライセンス保持者が承認を行うと、データが複数回送信される状態になっています。

理想としては、キントーンにデータが飛ぶ、もしくは最初の承認でのみ、kintoneにデータを送信したいと考えています。

(() => {
‘use strict’;
const kintoneAppId = 425;
const domain = window.document.location.origin;

// kintoneにワークフローのデータを登録
const addKintoneTask = async (token, request) => {
const body = {
app: kintoneAppId,
record: {
title: {value: request.items.title.value},
employee_number: {value: request.items.employee_number.value},
department: {value: request.items.department.value},
office_name: {value: request.items.office_name.value},
Company_Name: {value: request.items.Company_Name.value},
location: {value: request.items.location.value},
telephone_number: {value: request.items.telephone_number.value},
Business_content: {value: request.items.Business_content.value},
Employment_type: {value: request.items.Employment_type.value},
Contract_start_date: {value: request.items.Contract_start_date.value},
Contract_expiration_date: {value: request.items.Contract_expiration_date.value},
Reason_for_side_job: {value: request.items.Reason_for_side_job.value},
Commuting_method: {value: request.items.Commuting_method.value},
one_month_working_hours: {value: request.items.one_month_working_hours.value},
Other_reporting_matters: {value: request.items.Other_reporting_matters.value},
Link: {value: ${domain}/g/workflow/view.csp?fid=-3&pid=${request.id}},
},
};
const response = await fetch(/k/v1/record.json?__REQUEST_TOKEN__=${token}, {
method: ‘POST’,
headers: {
‘X-Requested-With’: ‘XMLHttpRequest’,
‘Content-Type’: ‘application/json’,
},
body: JSON.stringify(body),
});
if (!response.ok) {
throw new Error(‘kintoneレコードの登録時にエラーが発生しました’);
}
return response;
};

garoon.events.on(‘workflow.request.approve.submit.success’, async (event) => {
const request = event.request;
const status = request.status.type;

// すでに処理が実行された場合は何もしない
if (window.workflowExecuted) {
  return event;
}

// 最初の承認時のみ実行(最初の承認が完了した場合のみ実行)
if (status !== 'IN_PROGRESS' && status !== 'APPROVE') {
  return event;
}

try {
  // 承認後にkintoneのCSRFトークンを取得する
  const token = await garoon.connect.kintone.getRequestToken();
  await addKintoneTask(token, request);

  // 実行済みフラグをセット(1回だけ実行するため)
  window.workflowExecuted = true;  // ローカルでフラグを設定
} catch (error) {
  window.alert(error.message || '承認しました');
}
return event;

});
})();

どのようにすれば、最終承認前に一度だけデータを送信するロジックを実現できるでしょうか
ご存知の方がいればお知恵をお貸しください。

何卒、よろしくお願いいたします。

この部分なのですが、ローカルデフラグを設定とあるので、PCごとに1回みたいな感じになっているのでは!?
なので別のPCから承認?したら実行されちゃう・・・みたいになってたりしませんでしょうか??

「いいね!」 1