ONLYOFFICE’s diary

OSSドキュメントエディタの使い方やヒントをご紹介します

ONLYOFFICEマクロでスプレッドシートにハイパーリンクをインポートする方法

ハイパーリンクは、スプレッドシートの美しさと機能性を大幅に向上させ、ドキュメント内の重要なリソースに簡単にアクセスできるようにします。このブログ記事では、他のスプレッドシートからリンクデータを抽出してハイパーリンクをインポートするマクロを作成する手順を順を追ってご紹介します。 Import hyperlinks into your spreadsheet with ONLYOFFICE macro

 

マクロの構築

まず、ドキュメント内のSheet1とSheet2というワークシートを表す2つの変数oWorksheetAとoWorksheetBを初期化します。また、Sheet1のデータを格納するために使用される2つの空の配列titlesとlinksを作成します:

var oWorksheetA = Api.GetSheet("Sheet1");
var oWorksheetB = Api.GetSheet("Sheet2");
var rowIndex = 0;
var titles = [];
var links = [];

次にwhileループでSheet1の行を繰り返し処理します(今回は10行まで)。ループの中では、A列にはタイトルが、B列にはリンクが含まれていると仮定して、A列とB列のセルから値を取得します。これらの値は、後で使用するために、titles 配列と links 配列に格納されます:

while (rowIndex < 10) {
    var titleCell = oWorksheetA.GetRangeByNumber(rowIndex, 0); // Assuming title is in column A
    var linkCell = oWorksheetA.GetRangeByNumber(rowIndex, 1); // Assuming link is in column B
    var title = titleCell.GetValue();
    var link = linkCell.GetValue();
    titles.push(title); // Store titles in an array
    links.push(link);   // Store links in an array
    rowIndex++; // Increment the row index for the next iteration
}

次にSheet2(oWorksheetB)の選択範囲をターゲットにし、ForEachメソッドを使って選択範囲の各セルを繰り返し処理します。各セルについて、セルの値を取得し、その値がタイトル配列に格納されているタイトルのいずれかと一致するかどうかをチェックします:

var rangeB = Api.GetSelection();
rangeB.ForEach(function (cell) {
    var cellValue = cell.GetValue();
    // Check if the cell value matches any of the titles from the array
    var index = titles.indexOf(cellValue);
});

一致するものが見つかれば、titles 配列と links 配列から対応するタイトルとリンクを取得します。また、cell.GetAddressを使用してSheet2の現在のセルのアドレスを取得します。最後に、取得したタイトルとリンクを使用して、Sheet2 にハイパーリンクを設定します:

if (index !== -1) {
        var title = titles[index];
        var link = links[index];
        var address = cell.GetAddress(true, true, "xlA1", false);
        // Set the hyperlink in oWorksheetB
        oWorksheetB.SetHyperlink(address, link, "Api ONLYOFFICE", title);
    }

マクロ全体は以下の通りになります:

var oWorksheetA = Api.GetSheet("Sheet1");
var oWorksheetB = Api.GetSheet("Sheet2");
var rowIndex = 0;
var titles = [];
var links = [];
while (rowIndex < 10) {
    var titleCell = oWorksheetA.GetRangeByNumber(rowIndex, 0); // Assuming title is in column A
    var linkCell = oWorksheetA.GetRangeByNumber(rowIndex, 1); // Assuming link is in column B
    var title = titleCell.GetValue();
    var link = linkCell.GetValue();
    titles.push(title); // Store titles in an array
    links.push(link);   // Store links in an array
    rowIndex++; // Increment the row index for the next iteration
}
var rangeB = Api.GetSelection();
rangeB.ForEach(function (cell) {
    var cellValue = cell.GetValue();
    // Check if the cell value matches any of the titles from the array
    var index = titles.indexOf(cellValue);
    if (index !== -1) {
        var title = titles[index];
        var link = links[index];
        var address = cell.GetAddress(true, true, "xlA1", false);
        // Set the hyperlink in oWorksheetB
        oWorksheetB.SetHyperlink(address, link, "Your Description", title);
    }
})

マクロを実行し、どのように機能するか見てみましょう!

このマクロがあなたのツールキットの貴重な資産となることを心から願っています。ONLYOFFICEマクロを取り入れることで、生産性の向上と効率的で自動化されたソリューションを手に入れることができます。 マクロ作成に没頭しながら、ONLYOFFICE APIが提供する機会をお見逃しなく。ご質問や革新的なアイデアがありましたら、コメントや直接のコミュニケーションを通じて、私たちと共有してください。私たちは、皆さまの意見を熱烈に歓迎し、皆さまとのコラボレーションの可能性を楽しみにしています。