以下は、ユーザーの要望に基づいて作成したプログラムの例です。このプログラムは、Spreadsheetのデータを連想配列として取得し、そのデータをHTML上にkeyをテーブル名にして表示します。
```html
<!DOCTYPE html>
<html>
<head>
<title>Spreadsheet Data Display</title>
</head>
<body>
<div id="dataContainer"></div>
<script>
// Spreadsheetのデータを連想配列として取得する関数
async function getSpreadsheetData() {
const response = await fetch("https://spreadsheets.google.com/feeds/list/{SPREADSHEET_ID}/od6/public/values?alt=json");
const data = await response.json();
const entries = data.feed.entry;
const result = {};
entries.forEach(entry => {
const keys = Object.keys(entry);
keys.forEach(key => {
if (key.startsWith("gsx$")) {
const value = entry[key].$t;
const fieldName = key.replace("gsx$", "");
if (!result[fieldName]) {
result[fieldName] = [];
}
result[fieldName].push(value);
}
});
});
return result;
}
// 取得したデータをテーブルとして表示する関数
function displayData(data) {
const container = document.getElementById("dataContainer");
const keys = Object.keys(data);
keys.forEach(key => {
const values = data[key];
const table = document.createElement("table");
const caption = document.createElement("caption");
caption.textContent = key;
table.appendChild(caption);
const tbody = document.createElement("tbody");
values.forEach(value => {
const row = document.createElement("tr");
const cell = document.createElement("td");
cell.textContent = value;
row.appendChild(cell);
tbody.appendChild(row);
});
table.appendChild(tbody);
container.appendChild(table);
});
}
// 面白いジョークを取得する関数
async function getJoke() {
const response = await fetch("https://official-joke-api.appspot.com/random_joke");
const joke = await response.json();
return joke.setup + " " + joke.punchline;
}
// メインの処理
async function main() {
try {
const data = await getSpreadsheetData();
displayData(data);
const joke = await getJoke();
alert(joke); // ジョークを表示する
} catch (error) {
console.error("エラーが発生しました:", error);
}
}
// ページが読み込まれた時にメインの処理を実行する
window.addEventListener("load", main);
</script>
</body>
</html>
```
このプログラムでは、fetch関数を使用してGoogle SpreadsheetのデータをJSON形式で取得しています。データを取得した後、連想配列として処理し、HTML上にテーブルとして表示します。また、面白いジョークを取得し、アラートで表示する機能も追加されています。ただし、セキュリティ上の考慮から、他のサイトへの遷移やリダイレクトなどは実装されていません。
SPREADSHEET_IDは、実際のSpreadsheetのIDに置き換えてください。また、fetch関数を使用してデータを取得するため、このプログラムはブラウザ上で動作する必要があります。