Not every eventuality will be anticipated in the casual script. This will do most of what I assume you want (multiple items per multiple artboards), but, for example, I have not considered an item spanning two artboards:
// select items
var doc = app.activeDocument;
var ABs = doc.artboards;
for (var i = 0; i < ABs.length; i++) {
var AB = ABs[i].artboardRect;
var maskedArtwork = [];
for (var j = 0; j < doc.selection.length; j++) {
var b1 = doc.selection[j].geometricBounds;
if ((b1[2] > AB[0] && b1[0] < AB[2]) && (b1[3] < AB[1] && b1[1] > AB[3])) {
maskedArtwork.push(doc.selection[j]);
}
}
if (maskedArtwork.length == 0) {
continue;
}
var clippingPath = doc.pathItems.rectangle(AB[1], AB[0], AB[2] - AB[0], - (AB[3] - AB[1]));
var clippingSet = app.activeDocument.groupItems.add();
for (var k = 0; k < maskedArtwork.length; k++) {
maskedArtwork[k].moveToEnd(clippingSet);
}
clippingPath.moveToBeginning(clippingSet);
clippingSet.clipped = true;
}