Processing Ajax...

Title

Message

Confirm

Confirm

Confirm

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure?
Save up to 50% on our desktop apps during our big Summer Sale!Save up to 50% on our desktop apps during our big Summer Sale, including DisplayFusion, ClipboardFusion, FileSeek, LogFusion, TrayStatus, and VoiceBot!Save up to 50% on our desktop apps during our big Summer Sale!

Export Pinned as CSV

Description
This macro exports pinned items to Desktop as cf_pinned_export.csv.
Language
C#.net
Minimum Version
Created By
Chris Gallagher
Contributors
-
Date Created
May 29, 2026
Date Last Modified
May 29, 2026

Macro Code

using System;
using System.IO;
using System.Text;

public static class ClipboardFusionHelper
{
    // ===== Config =====
    private const string ExportFolder = "";  // "" = Desktop. Or set e.g. "C:\\Backups\\ClipboardFusion"
    private const string ExportFileName = "cf_pinned_export.csv";
    private const bool TimestampFileName = false;  // true = appends _YYYY-MM-DD_HHmmss before .csv
    // ==================

    public static string ProcessText(string text)
    {
        string folder = string.IsNullOrEmpty(ExportFolder)
            ? Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
            : ExportFolder;

        string fileName = ExportFileName;
        if (TimestampFileName)
        {
            string stamp = DateTime.Now.ToString("yyyy-MM-dd_HHmmss");
            string baseName = Path.GetFileNameWithoutExtension(ExportFileName);
            string ext = Path.GetExtension(ExportFileName);
            fileName = baseName + "_" + stamp + ext;
        }

        Directory.CreateDirectory(folder);
        string exportPath = Path.Combine(folder, fileName);

        var sb = new StringBuilder();
        sb.AppendLine("index,type,content");

        int total = BFS.ClipboardFusion.GetLocalPinnedItemCount();
        int textCount = 0;

        for (int i = 0; i < total; i++)
        {
            string type = "unknown";
            string content = "";

            if (BFS.ClipboardFusion.GetLocalPinnedItemContainsText(i))
            {
                type = "text";
                content = BFS.ClipboardFusion.GetLocalPinnedText(i) ?? "";
                textCount++;
            }
            else if (BFS.ClipboardFusion.GetLocalPinnedItemContainsImage(i))
            {
                type = "image";
                content = "[image - not exported]";
            }
            else if (BFS.ClipboardFusion.GetLocalPinnedItemContainsFileList(i))
            {
                type = "files";
                string[] files = BFS.ClipboardFusion.GetLocalPinnedFileList(i);
                content = string.Join("; ", files);
            }

            content = content.Replace("\"", "\"\"");
            sb.AppendLine(i + ",\"" + type + "\",\"" + content + "\"");
        }

        File.WriteAllText(exportPath, sb.ToString(), Encoding.UTF8);
        System.Windows.Forms.MessageBox.Show(
            "Exported " + total + " items (" + textCount + " text) to:\n" + exportPath);

        return null;
    }
}