- 締切済み
CORSに引っかかってしまいます。
post送信側のスクリプト javascript:(function(){ var data = { field1: 'value1', field2: 'value2', field3: 'value3' }; var xhr = new XMLHttpRequest(); xhr.open("POST", "スクリプトのurl", true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(JSON.stringify(data)); })(); gas側のスクリプト // スクリプトのトリガーを設定する場合は、必要に応じてトリガーを追加することもできます。 function doPost(e) { var sheet = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID').getActiveSheet(); var data = JSON.parse(e.postData.contents); // データをスプレッドシートに書き込む sheet.appendRow([data.field1, data.field2, data.field3]); // 必要なフィールドに合わせて変更 return ContentService.createTextOutput('Success').setMimeType(ContentService.MimeType.TEXT); } スプレッドシートに書き込みたいのですがhttps://script.google.com/以外から実行すると書き込めません。どうすれば外部サイトから書き込めるでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AIエージェント あい(@OKWAVE-AI)
- ベストアンサー率87% (1858/2116)
関連するQ&A
- jquery PHP 値 ajax
失礼します。現在jqueryで作成した2次元配列をPHP側に渡したいのですが上手くいきません。 jquery側のコンソールで確認した際にはsuccessの処理が行われ配列の中身がjson形式で表示されるのですが、その内容をPHP側で確認しようとするとNULLが返ってきてしまいます。 何卒ご教授よろしくお願いいたします。 html側 $(function(){ // 送るデータ形式はJSONでなければ、PHP側でエラーが出る.のでJSON.stringify()でJSON形式に変換 send_data= JSON.stringify(data); // 送信処理 $.ajax({ url: "ajax.php", // 送信先のPHP type: "POST", // POSTで送る contentType: "Content-Type: application/json; charset=UTF-8", //必須ではなさそうだが、サーバ側との整合のために明示しておいた方がよい。 // dataType: 'json', //受信形式 必須ではなさそうだがサーバ側との整合のために明示しておいた方がよい。 data:send_data //JSON形式の送信データ }).success(function(data, status, xhr) { // 通信成功時の処理 console.log("success"); console.log("data ="+data); console.log("status ="+status); console.log("xhr ="+xhr); }).error(function(xhr, status, error) { // 通信失敗時の処理 console.log("error"); }).complete(function(xhr, status) { // 通信完了時の処理 console.log("fin"); }); }) }) PHP側 二通り試してみました。 <?php //php://inputはPOSTの生データを取得できる $json = file_get_contents("php://input"); //JSON形式データをPHPの配列型に変換 $data = json_decode($json); var_dump($data) ; //POSTできたデータを格納 $hoge = $_POST['data']; var_dump($hoge);
- ベストアンサー
- AJAX
- $.getJSONにJSON.stringifyを
$.getJSONに、JSON.stringifyした結果を指定したいのですが、どうすればよいでしょうか? ■現状 ・コンソールにJSONは出力されているのですが、$.getJSONでこのファイルを指定しても、画面真っ白です ▼index.html <script type="text/javascript" src="hoge.json"></script> <script type="text/javascript"> $.getJSON('hoge.json', function(data) { ▼hoge.json var obj =([ [略], ]); var json_text = JSON.stringify(obj); // テスト出力 console.log(json_text); ■質問 ・$.getJSONにこの出力結果(json_text)を指定するためには、どうすれば良いでしょうか? ・一旦ファイル出力しなければいけないのでしょうか? ・どうやるのでしょうか? ・AJAXでサーバ側へデータを渡してファイル出力した後、$.getJSONでその出力したファイルを指定するしかない?
- ベストアンサー
- JavaScript
- フォームからjQuery,jQuery.jsonを使ってJSONを作っ
フォームからjQuery,jQuery.jsonを使ってJSONを作ってPHPで表示したい。 こんばんは。2、3日ずっと悩んでて解決しないので助けてください。 jQuery,jQuery.jsonを使ってJSONを作成しています。 クリックイベントに var form = $("#sform"); var json = $(form.serializeArray()); var strJson = $.toJSON(json); という形をとって $.ajax({ url : "request.php", type : "post", data : strJson, success: function(request){ $('#result').html(request); } }); で送っています。 ただPHP側で var_dump($_POST); を行ってもArray ( ) と表示されます。 firebugで見たところpostに入っているデータは以下の通りです。 {"0":{"name":"date","value":"2010/09/15"},"1":{"name":"type","value":"new"},"2":{"name":"bin[]","value":"2"},"3":{"name":"bin[]","value":"3"},"length":4} var_dumpで表示できないのはなぜでしょうか? 上記で変数json のまま送るとオブジェクトとして送れてvar_dump でも表示できます。 ただ今はjson の勉強をしているので、できればなぜこうなっているのかを理解したいです。 基本的なところで勉強不足かもしれませんが、何かアドバイスなど頂けると嬉しいです。 よろしくお願いします。
- ベストアンサー
- JavaScript
- Google MapsのKMLをJSONで取得したい。
Google MapsのKMLをJSONで取得したい。 Google Mapsで作成したマイマップのKMLを見るとURLが書かれています。 このURLの末尾を「&output=kml」→「&output=json」 と変更するとJSONで取得できると思うのですが、 実行するとstatus=0となっていまいます。 HTTPヘッダを見る限り200なので取得出来ているようなのですが・・・ なぜでしょうか?教えてください。 === var jsonUrl = 'url' var xhr = new XMLHttpRequest(); xhr.open("GET", jsonUrl, true); xhr.onreadystatechange = function() { if (xhr.readState ==4 && xhr.status == 200){ var jresult = document.getElementById("json_panel"); jresult.innerHTML += xhr.responseTEXT; } else { alert (xhr.statusTEXT); } } xhr.send();
- ベストアンサー
- JavaScript
- HTML内部のJavascriptの記述について
webに遅延情報を記載するHTMLを作成しているのですがJavascriptの結果が表示されません当方まだ学習中であり初歩的なミスなどあるかもしれませんがよろしくお願いいたします。 <!DOCTYPE html> <html> <head> </head> <body> <h1>遅延情報</h1> <script language="JavaScript"> function (){ var json = JSON.parse(UrlFetchApp.fetch("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json").getContentText()); var data1 = [ {nam:"豊肥本線",compan:"JR九州"}, {nam:"横浜線",compan:"JR西日本"}, ] var lind =""; data1.forEach( function( value ) { var nam=value.nam; var compan=value.compan; json.forEach( function( value ) { var name=value.name; var company=value.company; if(nam === name && compan === company){ lind='周辺の鉄道が遅延しています'; } }); }); if(!lind) { lind='遅延情報はありません'; } document.write(lind); } </script> </body> </html>
- 締切済み
- その他(インターネット・Webサービス)
- html内に記述するJavascriptについて
webに遅延情報を記載するHTMLを作成しているのですがJavascriptの結果が表示されません当方まだ学習中であり初歩的なミスなどあるかもしれませんがよろしくお願いいたします。 <!DOCTYPE html> <html> <head> </head> <body> <h1>遅延情報</h1> <script language="JavaScript"> function (lind){ var json = JSON.parse(UrlFetchApp.fetch("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json").getContentText()); var data1 = [ {nam:"豊肥本線",compan:"JR九州"}, {nam:"横浜線",compan:"JR西日本"}, ] var lind =""; data1.forEach( function( value ) { var nam=value.nam; var compan=value.compan; json.forEach( function( value ) { var name=value.name; var company=value.company; if(nam === name && compan === company){ lind='周辺の鉄道が遅延しています'; } }); }); if(!lind) { lind='遅延情報はありません'; } document.getElementById(“text”).innerHTML = lind; } </script> <div id=”text”></div> </body> </html>
- ベストアンサー
- JavaScript
- 【2】同一スプレッドシート内で複数GASを使用
以前、「同一スプレッドシート内で、複数GASを使用したい」のタイトルで投稿し、回答を頂きました。 https://okwave.jp/qa/q9537222.html それを参考に、 ●シート名を取得 function sheetname() { return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); } ●必ず一番左のタブを開く(https://kitaney-google.blogspot.com/2015/11/google-url.html) function sample_activate_first_sheet_2(){ SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].activate(); } の2つのGASを以下のように記述しました --------------------- sheetname(); sample_activate_first_sheet_2(); function sheetname() { return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); } function sample_activate_first_sheet_2(){ SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].activate(); } ------------------------------------ すると、「必ず一番左のタブを開く」は動作したのですが、 「シート名を取得」がうまく表示されませんでした。 この記述方法ではダメなんでしょうか。 超初心者なので具体的に教えて頂けると嬉しいです。
- ベストアンサー
- Googleサービス全般
- オブジェクトの内容を確認する方法
JavaScriptでオブジェクトの中身を確かめたいときに、 JSON.stringifyや下の関数のようなやり方がありますが、 var showObj = function(obj) { var props = ""; for (var prop in obj){ props += prop + "=" + obj[prop] + "\n"; } return props } JSON.stringify(Math)//{} showObj(Math)// となり、Mathオブジェクトの中身は確認できませんでした。 これはどういった理由によるものなのでしょうか。 また、(JavaScriptのコードから)確認する方法はあるのでしょうか。
- ベストアンサー
- JavaScript
- 2つのjavascriptを組み合わせたい
フォームメール用の2つのjavascriptがあります。 ●2重送信防止とデータ送信後指定ページへ遷移するjavascript ●テキストボックスが空欄だった時にアラートを表示するjavascript の2つです。 この2つを組み合わせようとしたのですが、うまく動きません。 ご指導いただきたくお願いいたします。 *************************************************** 【●2重送信防止とデータ送信後指定ページへ遷移するjavascript】【動きます】 送信ボタン押下後、2重送信を防止しながら、データ送信後は「location.href = "finish.html"」でfinish.htmlを表示します。 <script type="text/javascript" src="js/jquery.js"></script> <script> jQuery(function($) { $('#form1').submit(function(event) { // HTML送信キャンセル event.preventDefault(); //フォーム要素取得 var $form = $(this); // 送信ボタンを取得 // (後で使う: 二重送信防止) var $button = $form.find('button'); // 送信 $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&delay=1', timeout: 10000, // 送信前 beforeSend: function(xhr, settings) { // ボタン無効二重送信防止 $button.attr('disabled', true); }, // 応答後 complete: function(xhr, textStatus) { // ボタン有効再送信許可 $button.attr('disabled', false); }, // 通信成功処理 success: function(result, textStatus, xhr) { // 入力値初期化 $form[0].reset(); location.href = "finish.html"; }, // 通信失敗処理 error: function(xhr, textStatus, error) { alert('retry');} }); }); }); </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信A"> </form> *************************************************** 【●テキストボックスが空欄だった時にアラートを表示するjavascript】【動きます】 テキストボックスが空欄だったらアラートを表示します。 <script> function check3() { var tel3 = document.form1.tel.value; var fax3 = document.form1.fax.value; var isValid = true; if (!tel3) { alert("電話未入力"); isValid = false; } if (!fax3) { alert("FAX未入力"); isValid = false; } if (!isValid) { return; } document.form1.submit(); } </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信B" onclick="check3();"> </form> *************************************************** 【上記の2つを組み合わせてみました。】【動きません】 テキストボックスが空欄だったらアラートを表示しながら2重ボタン排除&finish.htmlに遷移というものです。 【結果】 「問題なく動くjavascript」2つを単純に組み合わせただけなのですが、 finish.htmlに遷移せずinsert.phpが表示されます。ご指導宜しくお願いします。 <script type="text/javascript" src="js/jquery.js"></script> <script> jQuery(function($) { $('#form1').submit(function(event) { event.preventDefault(); var $form = $(this); var $button = $form.find('button'); $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&delay=1', timeout: 10000, beforeSend: function(xhr, settings) { $button.attr('disabled', true); }, complete: function(xhr, textStatus) { $button.attr('disabled', false); }, success: function(result, textStatus, xhr) { $form[0].reset(); location.href = "finish.html"; }, error: function(xhr, textStatus, error) { alert('retry');} }); }); }); </script> <script> function check3() { var tel3 = document.form1.tel.value; var fax3 = document.form1.fax.value; var isValid = true; if (!tel3) { alert("電話未入力"); isValid = false; } if (!fax3) { alert("FAX未入力"); isValid = false; } if (!isValid) { return; } document.form1.submit(); } </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信B" onclick="check3();"> </form>
- ベストアンサー
- JavaScript
- undef datalistがundefinedに
javascript datalistがundef datalistがundefinedになります。 var datalist = { data3: "hoge3", } // str=[]; var a = { data1: "hoge1", data2: "hoge2" } function SaveDataToLocalStorage(datalist) { var a = []; a.push(JSON.parse(localStorage.getItem('session'))); localStorage.setItem('session', JSON.stringify(a)); // Parse the serialized data back into an aray of objects a = JSON.parse(localStorage.getItem('session')) || []; // Push the new data (whether it be an object or anything else) onto the array alert(datalist); a.push(datalist); console.log(datalist); // Alert the array value alert(a+"datalist"); // Should be something like [Object array] // Re-serialize the array back into a string and store it in localStorage localStorage.setItem('session', JSON.stringify(a)); }
- ベストアンサー
- JavaScript