gasメモ(自分用)
スプシ変換
function convertExcelToGoogleSheetWithinSameFolder() {
// フォルダの ID を設定
var folderId = 'YOUR_FOLDER_ID'; // ここにフォルダのIDを入れてください
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFilesByType(MimeType.MICROSOFT_EXCEL);
while (files.hasNext()) {
var file = files.next();
var blob = file.getBlob().setName(file.getName().replace('.xlsx', ''));
// Excel ファイルを Google スプレッドシートの形式で同じフォルダにアップロード
folder.createFile(blob); // この行でBlobがGoogleスプレッドシートに変換される
}
}
配列取得
function getFilesFromFolder(folderId) {
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFiles();
var fileData = [];
while (files.hasNext()) {
var file = files.next();
fileData.push({
id: file.getId(),
title: file.getName()
});
}
return fileData;
}
js
function doGet() {
// 指定したフォルダIDのフォルダ内のすべてのファイルのIDとタイトルを取得
var spreadsheetInfo = getFilesFromFolder('YOUR_FOLDER_ID');
// HTMLテンプレートをロード
var html = HtmlService.createTemplateFromFile('Page');
// プレースホルダにURLとタイトルの情報をセット
html.spreadsheetInfo = spreadsheetInfo.map(function(info) {
return {
url: 'https://docs.google.com/spreadsheets/d/' + info.id + '/edit',
title: info.title
};
});
return html.evaluate();
}
html
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<? for (var i = 0; i < spreadsheetInfo.length; i++) { ?>
<a href="<?= spreadsheetInfo[i].url ?>" target="_blank"><?= spreadsheetInfo[i].title ?></a><br>
<? } ?>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>スプレッドシートへのリンク</title>
</head>
<body>
<!-- 以下のリンクのURL部分を変換したスプレッドシートのURLに置き換えてください -->
<a href="https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID/edit">変換したスプレッドシートを開く</a>
</body>
</html>
更新
function doGet() {
return HtmlService.createHtmlOutputFromFile('Page');
}
function checkFileUpdates() {
// 確認したいファイルIDのリスト
var fileIds = ['YOUR_FILE_ID_1', 'YOUR_FILE_ID_2', ...]; // 実際のファイルIDに置き換えてください
var results = [];
for (var i = 0; i < fileIds.length; i++) {
var file = DriveApp.getFileById(fileIds[i]);
var lastUpdated = file.getLastUpdated();
results.push({
'name': file.getName(),
'id': file.getId(),
'lastUpdated': lastUpdated
});
}
return results;
}
html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h1>File Update Information</h1>
<button onclick="displayUpdates()">Check Updates</button>
<ul id="updateList"></ul>
<script>
function displayUpdates() {
google.script.run.withSuccessHandler(showUpdates).checkFileUpdates();
}
function showUpdates(files) {
var ul = document.getElementById('updateList');
ul.innerHTML = ""; // Clear previous results
for (var i = 0; i < files.length; i++) {
var li = document.createElement('li');
li.textContent = files[i].name + " (" + files[i].id + ") - Updated at " + files[i].lastUpdated;
ul.appendChild(li);
}
}
</script>
</body>
</html>
onload
document.addEventListener("DOMContentLoaded", function() {
// Open all panels when the page loads
const panels = document.querySelectorAll(".panel");
for (let panel of panels) {
panel.style.maxHeight = panel.scrollHeight + "px";
}
// Attach click handlers to the accordion buttons
const acc = document.querySelectorAll(".accordion");
for (let i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function () {
this.classList.toggle("active");
const panel = this.nextElementSibling;
if (panel.style.maxHeight && panel.style.maxHeight !== "0px") {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
});
sort
function sortActiveRange() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getActiveRange();
const values = range.getValues();
// データを処理して並び替える
const sortedValues = values.map(row => {
const fourthColValue = row[3];
const matchingRow = values.find(innerRow => innerRow[1] === fourthColValue);
return [matchingRow[0], matchingRow[1], matchingRow[2], fourthColValue];
});
// 範囲に並び替えたデータを書き戻す
range.setValues(sortedValues);
}
vba select_img
Sub SelectPicturesInActiveRange()
Dim rng As Range
Dim shp As Shape
Dim grpItems() As String
Dim i As Integer
' アクティブセルの範囲を取得します
Set rng = Selection
i = 0
' アクティブセルの範囲内にある画像を探します
For Each shp In ThisWorkbook.Worksheets("Sheet1").Shapes
If Not Intersect(rng, shp.TopLeftCell) Is Nothing And Not Intersect(rng, shp.BottomRightCell) Is Nothing Then
ReDim Preserve grpItems(i)
grpItems(i) = shp.Name
i = i + 1
End If
Next shp
' 1つ以上の画像が存在した場合、それらをアクティブにします
If i > 0 Then
ThisWorkbook.Worksheets("Sheet1").Shapes.Range(grpItems).Select
' Selection.ShapeRange.Group グループ化する時は解除
End If
End Sub
tr td vba
Sub AddHtmlTags()
Dim rng As Range
Dim row As Range
Dim cell As Range
Dim lastColumn As Integer
Dim i As Integer
' アクティブセル範囲を選択
Set rng = Selection
For Each row In rng.Rows
' 一番左端のセルに <tr><td> を追加
row.Cells(1, 1).Insert Shift:=xlToRight
row.Cells(1, 1).Value = "<tr><td>"
' 中間のセルに </td><td> を追加
lastColumn = row.Columns.Count
For i = 2 To lastColumn Step 2
row.Cells(1, i + 1).Insert Shift:=xlToRight
row.Cells(1, i + 1).Value = "</td><td>"
Next i
' 一番右端のセルに </td></tr> を追加
row.Cells(1, row.Columns.Count + 1).Value = "</td></tr>"
Next row
End Sub
tr td gas
function addHtmlTags() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getActiveRange();
var values = range.getValues();
// 新しい配列を作成して変更を保存
var newValues = [];
for (var i = 0; i < values.length; i++) {
var newRow = [];
newRow.push("<tr><td>"); // 一番左のセル
for (var j = 0; j < values[i].length; j++) {
newRow.push(values[i][j]);
if (j < values[i].length - 1) {
newRow.push("</td><td>"); // セルの間
}
}
newRow.push("</td></tr>"); // 一番右のセル
newValues.push(newRow);
}
// 新しい値を元の範囲にセット
sheet.getRange(range.getRow(), range.getColumn(), newValues.length, newValues[0].length).setValues(newValues);
}