何百ものフォーラムの質問を読みましたが、解決策が見つかりません。
フォーム データ (AfterSave) を Google スプレッドシートに送信したい
このようなGoogleシートでWebアプリを作成しました
function doGet(e){
return handleResponse(e);
}
var SHEET_NAME = "Sheet1";
var SCRIPT_PROP = PropertiesService.getScriptProperties();
function doPost(e){
return handleResponse(e);
}
function handleResponse(e) {
var lock = LockService.getPublicLock();
lock.waitLock(30000);
try {
var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("1-L-rFuTM4oWbzcoLCfAoTGvvwC0iSiCdKtZRvl3RdRI"));
var sheet = doc.getSheetByName(SHEET_NAME);
var headRow = e.parameter.header_row || 1;
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow()+1; // get next row
var row = [];
for (i in headers){
if (headers[i] == "Timestamp"){
row.push(new Date());
} else {
row.push(e.parameter[headers[i]]);
}
}
sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
return ContentService
.createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))
.setMimeType(ContentService.MimeType.JSON);
} catch(e){
return ContentService
.createTextOutput(JSON.stringify({"result":"error", "error": e}))
.setMimeType(ContentService.MimeType.JSON);
} finally {
lock.releaseLock();
}
}
function setup() {
var doc = SpreadsheetApp.openById('1-L-rFuTM4oWbzcoLCfAoTGvvwC0iSiCdKtZRvl3RdRI');
SCRIPT_PROP.setProperty("key", doc.getId());
}
次に、Wix サイトにバックエンド .JSW を作成しました。これは次のようになります。
//sendSheets.jsw
import {fetch} from 'wix-fetch';
export function sendToSheets(data) {
fetch("https://script.google.com/macros/s/AKfycbykq05IP_ABzQfLa9ura_pISv-zwUHZdeGb2F9681ffyzubXi9I/exec", {
method: 'post',
body: data
});
}
最後に、私のページコードでは次のようになります
import {sendToSheets} from 'backend/sendSheets.jsw';
$w.onReady(function () {
$w("#dataset1").onAfterSave(sendToSheets);
});
export function sendFormData() {
var data = {
"input1":$w("#input1").value,
"input2":$w("#input2").value,
"dropdown1":$w("#dropdown1").value,
"dropdown2":$w("#dropdown2").value
};
sendToSheets(data);
}
最後に、Google Script Editor で作成したスクリプトは、スクリプトが合計 7 回実行されたことを示しています。これは、フォームを送信した正確な回数ですが、シートには何も投稿されていません。
私はマーケティングのバックグラウンドを持っており、コーディングについて少ししか知りませんが (学習しようとしています)、何をすべきか本当に理解できません。