Googleスプレッドシートの読み書きしたい! → doPost,doGetで読み書きするといいらしいっすよ
土曜日ガッツリやってようやくできた。GAS連携。
https://chatgpt.com/share/e/670127e2-cf58-8013-b6c5-3708e4389862
https://chatgpt.com/share/e/670127f3-514c-8013-aa78-bdfbc0320efc
http://sukidukinn.blog/wp-content/uploads/2024/10/20241005_CardMasterAI.zip
こちら、実際に動くGAS連携バックアップ
↓長いけど、GASのコード
function doGet(e) {
try {
// クエリパラメータから値を取得
var sheetId = e.parameter.sheetId || '※自分自身のシートId';
var sheetName = e.parameter.sheetName || 'シート1';
var range = e.parameter.range || null;
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
if (!sheet) {
return ContentService.createTextOutput(JSON.stringify({ success: false, error: '指定されたシートが見つかりません' })).setMimeType(ContentService.MimeType.JSON);
}
var values;
if (range) {
var dataRange = sheet.getRange(range);
values = dataRange.getValues();
} else {
values = sheet.getDataRange().getValues();
}
return ContentService.createTextOutput(JSON.stringify({ success: true, data: values })).setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService.createTextOutput(JSON.stringify({ success: false, error: error.message })).setMimeType(ContentService.MimeType.JSON);
}
}
function doPost(e) {
try {
Logger.log("Received POST request: " + JSON.stringify(e));
// POSTデータをパース
var jsonData = JSON.parse(e.postData.contents);
var operation = jsonData.operation || "append";
var data = jsonData.values;
// 'sheetId' を取得(指定がない場合はデフォルトのIDを使用)
var sheetId = jsonData.sheetId || "※自分自身のシートId";
// 'sheetName' を取得(指定がない場合はデフォルトのシート名を使用)
var sheetName = jsonData.sheetName || "シート1";
// スプレッドシートにアクセス
var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
// シートが存在しない場合のエラーハンドリング
if (!sheet) {
return ContentService
.createTextOutput(JSON.stringify({ success: false, error: "指定されたシートが見つかりません" }))
.setMimeType(ContentService.MimeType.JSON);
}
if (operation === 'append') {
if (data && Array.isArray(data)) {
// データを行ごとに追加
for (var i = 0; i < data.length; i++) {
Logger.log("Appending row: " + JSON.stringify(data[i]));
sheet.appendRow(data[i]);
}
return ContentService
.createTextOutput(JSON.stringify({ success: true }))
.setMimeType(ContentService.MimeType.JSON);
} else {
Logger.log("Invalid data format: " + JSON.stringify(data));
return ContentService
.createTextOutput(JSON.stringify({ success: false, error: "Invalid data format" }))
.setMimeType(ContentService.MimeType.JSON);
}
} else if (operation === 'update') {
if (data && Array.isArray(data)) {
// シートの内容をクリア
sheet.clearContents();
// データを最初の行から挿入
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
Logger.log("Sheet updated with new data.");
return ContentService
.createTextOutput(JSON.stringify({ success: true }))
.setMimeType(ContentService.MimeType.JSON);
} else {
Logger.log("Invalid data format: " + JSON.stringify(data));
return ContentService
.createTextOutput(JSON.stringify({ success: false, error: "Invalid data format" }))
.setMimeType(ContentService.MimeType.JSON);
}
} else {
Logger.log("Invalid operation: " + operation);
return ContentService
.createTextOutput(JSON.stringify({ success: false, error: "Invalid operation" }))
.setMimeType(ContentService.MimeType.JSON);
}
} catch (error) {
Logger.log("Error: " + error.stack);
return ContentService
.createTextOutput(JSON.stringify({ success: false, error: error.message }))
.setMimeType(ContentService.MimeType.JSON);
}
}
よし、そろそろスロットと脱出に戻ろう!
GAS連携色々 8時間