function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Amack DawgAmack Dawg 

[JS Button] Syntax Error when assigning variable with SFDC functions?

I have a Salesforce javascript List-View Button that I am trying to compile but I keep encountering a Syntax Error. The Code area highlights the '=' in this Statement:
var dayOfWeekVal = {!MOD( ({!TODAY()} - {!DATE(1900,1,8)} ), 7)};

This variable precedes a switch statement. I was able to successfully compile previously, but I had to introduce Salesforce Function-specific syntax.

Does anything in this line of code look syntatically incorrect?

Here is the entire Button code block for context:
 
{!REQUIRESCRIPT("/soap/ajax/36.0/connection.js")} 

var recordIds = {!GETRECORDIDS( $ObjectType.Creative_ID__c )};
var updatedTrackers = [];

//create variable to store the new Creative Start Date
var broadcastCrtvStart;

if (recordIds[0] == null) { 
	alert("Please select at least one Creative ID.") } 
else { 

	var dayOfWeekVal = {!MOD( ({!TODAY()} - {!DATE(1900,1,8)} ), 7)};

	switch( dayOfWeekVal ) {
		case 0: 
			broadcastCrtvStart = {!TODAY()} + 7;
			break;
		case 1:
			broadcastCrtvStart = {!TODAY()} + 6;
			break;
		case 2:
			broadcastCrtvStart = {!TODAY()} + 5;
			break;
		case 3:
			broadcastCrtvStart = {!TODAY()} + 4;
			break;
		case 4:
			broadcastCrtvStart = {!TODAY()} + 3;
			break;
		case 5:
			broadcastCrtvStart = {!TODAY()} + 2;
			break;
		case 6:
			broadcastCrtvStart = {!TODAY()} + 1;
		default:
			broadcastCrtvStart = {!TODAY()};
	}	

	var errors = [];


	for (var i = 0; i < recordIds.length; i++) { 
			var ctracker = new sforce.SObject("Creative_ID__c");
			ctracker.id = recordIds[i];		
			
			ctracker.Creative_Start_Date__c = broadcastCrtvStart;
			updatedTrackers.push(ctracker);
	}


	result = sforce.connection.update(updatedTrackers);

	if (result && result.length){ 
		var numFailed = 0; 
		var numSucceeded = 0;

		for(var i = 0; i < result.length; i++) {		
			var res = result[i]; 
			if (res && res.success == 'true'){ 
				numSucceeded++; 
			} else { 
				var es = res.getArray("errors"); 
				if (es.length > 0) { 
					errors.push(es[0].message); 
				} 
				numFailed++; 
				} 
			}
		} 
	if (numFailed > 0){ 
		alert("Failed: " + numFailed + "\nSucceeded: " + numSucceeded + " \n Due to: " + errors.join("\n")); 
	} else { 
		alert("Number of Creative IDs turned on: " + numSucceeded); 
		} 
	window.location.reload();
}



 
Best Answer chosen by Amack Dawg
GarryPGarryP
check out LOC 13. The sysntax is actually wrong hence an error. Just replace that line with -
    <pre>var dayOfWeekVal = {!MOD( (TODAY() - DATE(1900,1,8)), 7)};</pre>

In all such cases where you have to use multiple functions, just use one single merge Syntax.

I tested this and this works.