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);
}


いいなと思ったら応援しよう!