GASでGoogle翻訳の翻訳結果を返すスクリプトを作成してデプロイしました。
コードは以下のとおりです。
function doGet(e) { var p = e.parameter; var translatedText = LanguageApp.translate(p.text, p.source, p.target); return ContentService.createTextOutput(translatedText); }
ブラウザでデプロイ先のURLを叩けば翻訳結果が返ってくるのですが
javascriptで書いたコードでリクエストすると、
「has been blocked by CORS policy: Response to preflight request doesn't pass access control check:」
というエラーが返ってきてしまします。
javascriptのコードは以下のとおりです。
fetch(GASのURL, { method: 'GET', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Access-Control-Allow-Origin': '*' }, }) .then((res) => { レスポンスの処理 });
色々調べたのですが、
・サーバー側(GAS)から返すのはオブジェクトをそのままではなく ContentService.createTextOutputで変換しなければならない
・Content-Typeにapplication/x-www-form-urlencodedを設定してリクエストする
・axiosを使用し、crossDomain: trueというオプションをつける。
などやってみましたが、どれもうまくいきません。WordPressサイトなのでサーバーサイドからPHPでcurlコマンドを叩くという選択肢もあるのですが、できればフロントエンドで完結させたいのです。
どなたか解決策をご教示いただけないでしょうか?
回答2件
あなたの回答
tips
プレビュー