You can try this. It will update profile attributes & status both for all subscriber list.
<script runat="server">
Platform.Load("core","1");
var subkey = "abc123";
var subObj = Subscriber.Init(subkey);
var subs = subObj.Lists.Retrieve();
//Write(Stringify(subs) + "<br>"); // for test purpose
for (var i = 0; i < subs.length; i++)
{
// Write(subs[i].List.ID + "<br>"); // for test purpose
if(subs[i].Status == "Unsubscribed") // search for Unsubscribed in all subscriber list one by one
{
var testSubscriber = {
"SubscriberKey": subkey,
"Attributes":{"First Name": "Test11", "Last Name": "Test"},
"Lists": {"Status": "Active","ID": subs[i].List.ID, "Action": "Update"}
};
var subObj1 = Subscriber.Init(subkey);
var status = subObj1.Update(testSubscriber);
Write("status=" + status + "<br>");
}
}
</script>
In above mentioned code, I am assuming that the user's subscriber key is available to process (same as your ref. code).
Note : List ID should be passed to re-subscribe user from all subscriber list
Steps:
Step-1. Create a object of subscriber
var subObj = Subscriber.Init(subkey);
Step-2. Retrieve all subscriber list
var subs = subObj.Lists.Retrieve();
Step-3. Iterate for all available records of Subscriber list
for (var i = 0; i < subs.length; i++)
// Write(subs[i].List.ID + "<br>"); // for test purpose
Step-4. Create user object for each subscriber list to update
var testSubscriber = {
"SubscriberKey": subkey, //1
"Attributes":{"First Name": "Test11", "Last Name": "Test"}, //2
"Lists": {"Status": "Active","ID": subs[i].List.ID, "Action": "Update"} //3
};
Note:
1.(required) SubscriberKey is required field for update Subscriber
2.(Optional) If you want to update Attributes then pass all attributes as key value pair
3.(required in case of list) Pass Status, Id(ListId) & action that will perform on subscriber
//
Step-5. Create a new 'Subscribers' object to update
var subObj1 = Subscriber.Init(subkey);
- Update user reord
var status = subObj1.Update(testSubscriber);