After check, Google App Script will redirect the response for doPost, and this is not supported by Google Appsheet.
https://www.googlecloudcommunity.com/gc/AppSheet-Q-A/Use-return-values-from-webhooks-conversion-error/m-p/772956/highlight/true
So the workaround is to change the Webhook to Call Google App Script directly.
BTW, the original idea is proposed by AI so it doesn't know this limitation and cost me a day.