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?

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
9d ago
Date Last Modified
9d ago

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